Qpid第五课消息总线使用经验

qpid-broker服务器采用Java语言版本6.1.4
相关资料
http://qpid.apache.org/documentation.html

十多年的江都网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整江都建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“江都网站设计”,“江都网站推广”以来,每个客户项目都认真落实执行。

问题1)
发送到qpid服务器上的消息,如果没有被其他的客户端消费是否一直保存在内存中,
可能导致服务器内存耗尽,服务器崩溃,因为服务器的内存一开始就是设置为512MB

解决方案: 指定消息的超时时间,如果超时,就删除

问题2)
发送到qpid服务器上的消息,如果由于超时,客户端断开连接,是否也会出现上述类似的问题

qpid C++编程例子
http://qpid.apache.org/releases/qpid-cpp-1.36.0/messaging-api/cpp/examples/client.cpp.html

下载版本qpid-cpp-1.35.0
详细的编译参考可以在源码中找到文件INSTALL-WINDOWS.txt
代码
int HandleQPID()
{
std::string connectionOptions = "";
Connection connection("192.168.1.12:7070", connectionOptions);
connection.setOption("username", "admin");
connection.setOption("password", "admin");
//true的情况下,尝试重连会导致后续一直的阻塞
connection.setOption("reconnect", false);
try
{
connection.open();
Session session = connection.createSession();
Sender sender = session.createSender(info.strMessageAddress);

Message request;
request.setContent(info.strSendContext);
session.sync();

Address responseQueue("#response-queue; {create:always, delete:always}");
request.setReplyTo(responseQueue);
sender.send(request);
Receiver receiver = session.createReceiver(responseQueue);

try
{
Message response;
//如果不指定Duration,如果服务器接收到的报文一直没有返回,在这里会一直阻塞!!
if (receiver.fetch(response, Duration(300)))
{
info.strRecvContext = response.getContent();
std::cout << "info" << std::endl;
std::cout << info.strRecvContext << std::endl;
}
session.acknowledge();
}
catch (const std::exception& error)
{
std::cout << "receiver.fetch exception:" << error.what() << std::endl;
session.acknowledge();
session.close();
connection.close();
return -1;
}
session.close();
connection.close();
return 0;
}
catch (const std::exception& error)
{
//std::cout << "E:" << error.what() << std::endl;
info.strRecvContext = "";
connection.close();
return -1;
}
}


当前标题:Qpid第五课消息总线使用经验
分享地址:http://azwzsj.com/article/pjjpej.html