ActiveMQ请求和应答模式
来源:互联网 发布:最优化什么书 编辑:程序博客网 时间:2024/05/20 09:09
一、代码实现
要实现ActiveMQ的请求和应答模式,需要3部分组成:ActiveMQ消息总线、Client端(消息的发送者)、Server端(消息的接收者)
1、ActiveMQ消息总线
变量:
activemqBusAddress:消息总线部署的IP地址
activemqUsername:与消息总线建立连接需要的用户名
activemqPassword:与消息总线建立连接需要的用户密码
componentId:每个Client需要有唯一的componentId作为标示
connection:连接信息,类型Connection
session:为每一个连接创建session,用于存储消息信息,类型Session
方法:
initActiveMQ():初始化ActiveMQ,建立连接
destroy():销毁ActiveMQ,释放内存
2、Client(消息的producer)
1)两个队列:
ActiveMQQueue requestQueue = new ActiveMQQueue(RequestQueue);//用于消息发送的队列,RequestQueue为一个字符串,表示队列名字(同一类型的消息需要使用同一个请求队列)
ActiveMQQueue responseQueue = new ActiveMQQueue(ResponseQueue);//用于接收响应的队列,ResponseQueue为一个字符串,表示队列名字(不同的Client应用不同的队列名字标识)
2)消息发送
MessageProducer producer1 = activeMQBus.getProducer(requestQueue);//定义消息发送者
Message textMessage1 = activeMQBus.createTextMessage("消息内容");//设置消息内容
textMessage1.setJMSReplyTo(responseQueue);//指定响应返回的队列
textMessage1.setJMSCorrelationID(activeMQBus.getComponentId());//设置ClientID
producer1.send(textMessage1);//发送消息
3)响应接收
MessageConsumer consumer = activeMQBus.getConsumer(responseQueue);//定义响应接受者
consumer.setMessageListener(new MessageListener(){//设置监听等待响应
@Override
public void onMessage(final Message message) {
// TODO Auto-generated method stub
try {
message.acknowledge();//接收响应
String request = ((TextMessage) message).getText();//获得响应内容
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3、Server(消息的Consumer)
1)一个队列:
MessageConsumer consumer = activeMQBus.getConsumer(requestQueue);//用于接收消息的队列,RequestQueue为一个字符串,表示队列名字(RequestQueue应于消息发送的队列名相同)
2)消息接收
consumer.setMessageListener(new MessageListener(){//设置消息接收监听
@Override
public void onMessage(final Message message) {
// TODO Auto-generated method stub
try {
message.acknowledge();//接收消息
String request = ((TextMessage) message).getText();//获得消息内容
//3)发送响应
TextMessage response = (TextMessage) activeMQBus.createTextMessage("响应的文本内容");//设置响应的内容
MessageProducer producer = activeMQBus.getProducer(message.getJMSReplyTo());//根据请求的队列设置响应的发送者
producer.send(response);//发送响应
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
二、测试结果
1、 Client的每一条消息都会随机的被某一个Server接收,并未发生重复接收或遗漏的现象。
2、 Server端在成功接收消息后,会将响应信息返回给发送消息的相应Client上。
- ActiveMQ请求和应答模式
- 【ActiveMQ】ActiveMQ请求和应答模式
- activemq 应答模式
- HTTP 请求和应答详解
- ZMQ 第三章 高级请求-应答模式
- Python实现ZeroMQ请求-应答模式
- CZMQ之可靠的请求-应答模式
- http请求头和应答头
- SIP 应答和SIP 请求的区别
- ZMQ 第四章 可靠的请求-应答模式
- ZeroMQ指南:第3章:高级请求-应答模式
- ZeroMQ指南:第3章:高级请求-应答模式
- ZeroMQ指南:第3章:高级请求-应答模式
- 初探ZeroMQ(二) 请求-应答模式中套结字总结
- ZeroMQ指南:第3章:高级请求-应答模式
- C#WINFORM使用请求应答模式做登陆检查
- activemq的三种基本通信方式总结 点对点 发布订阅 请求应答
- http协议包:请求包和应答包
- networkmutilpledemoforhttpurlconnection 一个综合案例
- 二叉树复习
- ActiveMQ之TemporaryQueue和TemporaryTopic
- MyBatis的第一个HelloWorld小例子(不用接口)
- gcc编译选项
- ActiveMQ请求和应答模式
- 阿里面试问题(C++方向)
- float: right从右向左排序
- HDU2295_Radar _DLX跳舞链的重复覆盖
- SSM--之用Bootstrap插件实现分页
- WEB服务器:在IIS上实现python CGI
- 反射方法整理
- 欢迎使用CSDN-markdown编辑器
- MXNet如何用mxnet.image.ImageIter直接导入图像