#include "../pch/pch.h" #include "CAliyunMNS.h" CAliyunMNS::CAliyunMNS(std::string queueName) { string endpoint; string accessId; string accessKey; string stsToken; endpoint = CConfigReader::getConfigValue("mns.accountendpoint"); accessId = CConfigReader::getConfigValue("mns.accesskeyid"); accessKey = CConfigReader::getConfigValue("mns.accesskeysecret"); stsToken = ""; m_mnsClient = new MNSClient(endpoint, accessId, accessKey, stsToken); try { queue = m_mnsClient->getQueueRef(queueName.c_str()); //LOG_ERROR("queueName:" << queueName.c_str()); //LOG_ERROR("endpoint:" << endpoint.c_str()); //LOG_ERROR("accessId:" << accessId.c_str()); //LOG_ERROR("accessKey:" << accessKey.c_str()); //LOG_ERROR("stsToken:" << stsToken.c_str()); is_init = true; } catch(MNSServerException& me) { //cout << "Request Failed: " << me.GetErrorCode().c_str() << endl; LOG_INFO("Request Failed: " << me.GetErrorCode().c_str()); is_init = false; return; } catch(MNSExceptionBase& mb) { //cout << "Request Failed: " << mb.ToString().c_str() << endl; LOG_INFO("Request Failed: " << mb.ToString().c_str()); is_init = false; return; } } CAliyunMNS::~CAliyunMNS() { if(m_mnsClient) { delete m_mnsClient; } } std::string CAliyunMNS::getMessage() { if(is_init == false) { return "error!"; } try { Message message; queue->receiveMessage(30, message); std::string newMessage; bool res = CLewaimaiString::base64_decode(message.getMessageBody(), &newMessage); if(res == false) { LOG_INFO("base64解码失败!"); return "error!"; } queue->deleteMessage(message.getReceiptHandle()); return newMessage; } catch(MNSServerException& me) { //cout << "Request Failed: " << me.GetErrorCode().c_str() << endl; LOG_DEBUG("Request Failed: " << me.GetErrorCode().c_str()); return "error!"; } catch(MNSExceptionBase& mb) { //cout << "Request Failed: " << mb.ToString().c_str() << endl; LOG_DEBUG("Request Failed: " << mb.ToString().c_str()); return "error!"; } } void CAliyunMNS::sendMessage(std::string message) { std::string newMessage; CLewaimaiString::base64_encode(message, &newMessage); SendMessageResponse smResp; queue->sendMessage(newMessage.c_str(), smResp); } bool CAliyunMNS::getIsInit() { return is_init; }