CAliyunMNS.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include "../pch/pch.h"
  2. #include "CAliyunMNS.h"
  3. CAliyunMNS::CAliyunMNS(std::string queueName)
  4. {
  5. string endpoint;
  6. string accessId;
  7. string accessKey;
  8. string stsToken;
  9. endpoint = CConfigReader::getConfigValue("mns.accountendpoint");
  10. accessId = CConfigReader::getConfigValue("mns.accesskeyid");
  11. accessKey = CConfigReader::getConfigValue("mns.accesskeysecret");
  12. stsToken = "";
  13. m_mnsClient = new MNSClient(endpoint, accessId, accessKey, stsToken);
  14. try
  15. {
  16. queue = m_mnsClient->getQueueRef(queueName.c_str());
  17. //LOG_ERROR("queueName:" << queueName.c_str());
  18. //LOG_ERROR("endpoint:" << endpoint.c_str());
  19. //LOG_ERROR("accessId:" << accessId.c_str());
  20. //LOG_ERROR("accessKey:" << accessKey.c_str());
  21. //LOG_ERROR("stsToken:" << stsToken.c_str());
  22. is_init = true;
  23. }
  24. catch(MNSServerException& me)
  25. {
  26. //cout << "Request Failed: " << me.GetErrorCode().c_str() << endl;
  27. LOG_INFO("Request Failed: " << me.GetErrorCode().c_str());
  28. is_init = false;
  29. return;
  30. }
  31. catch(MNSExceptionBase& mb)
  32. {
  33. //cout << "Request Failed: " << mb.ToString().c_str() << endl;
  34. LOG_INFO("Request Failed: " << mb.ToString().c_str());
  35. is_init = false;
  36. return;
  37. }
  38. }
  39. CAliyunMNS::~CAliyunMNS()
  40. {
  41. if(m_mnsClient)
  42. {
  43. delete m_mnsClient;
  44. }
  45. }
  46. std::string CAliyunMNS::getMessage()
  47. {
  48. if(is_init == false)
  49. {
  50. LOG_INFO("is_init is false");
  51. return "error!";
  52. }
  53. try
  54. {
  55. Message message;
  56. queue->receiveMessage(30, message);
  57. std::string newMessage;
  58. bool res = CLewaimaiString::base64_decode(message.getMessageBody(), &newMessage);
  59. if(res == false)
  60. {
  61. LOG_INFO("base64解码失败!");
  62. return "error!";
  63. }
  64. queue->deleteMessage(message.getReceiptHandle());
  65. return newMessage;
  66. }
  67. catch(MNSServerException& me)
  68. {
  69. cout << "Request Failed: " << me.GetErrorCode().c_str() << endl;
  70. //LOG_DEBUG("Request Failed: " << me.GetErrorCode().c_str());
  71. return "error!";
  72. }
  73. catch(MNSExceptionBase& mb)
  74. {
  75. cout << "Request Failed: " << mb.ToString().c_str() << endl;
  76. //LOG_DEBUG("Request Failed: " << mb.ToString().c_str());
  77. return "error!";
  78. }
  79. }
  80. void CAliyunMNS::sendMessage(std::string message)
  81. {
  82. std::string newMessage;
  83. CLewaimaiString::base64_encode(message, &newMessage);
  84. SendMessageResponse smResp;
  85. queue->sendMessage(newMessage.c_str(), smResp);
  86. }
  87. bool CAliyunMNS::getIsInit()
  88. {
  89. return is_init;
  90. }