【ActiveMQ】ActiveMQ请求和应答模式
来源:互联网 发布:傲剑易筋经升级数据 编辑:程序博客网 时间:2024/05/08 23:13
在阅读的过程中有任何问题,欢迎一起交流
邮箱:1494713801@qq.com
QQ:1494713801
一、代码实现
要实现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 应答模式
- activemq的三种基本通信方式总结 点对点 发布订阅 请求应答
- springboot整合activemq,应答模式,消息重发机制,消息持久化
- ActiveMQ
- ACtiveMQ
- ACtiveMQ
- activeMQ
- ActiveMQ
- activeMQ
- activeMQ
- activemq
- ActiveMQ
- ActiveMQ
- ActiveMQ
- ActiveMQ
- activeMQ
- 我
- 深入掌握JMS(三):MessageListener
- Eclipes ee & tomcat 配置的完整过程
- <数据结构>顺序表
- java多线程总结
- 【ActiveMQ】ActiveMQ请求和应答模式
- 初学python求组队之用python画一个圣诞树,祝大家圣诞快乐!
- 【网络安全】Snort安装规则编写及实例验证
- 用MySql的查询分析语法explain来优化查询和索引
- UIKit Dynamics入门
- android 之模拟器启动不了的解决问题
- 怎么删除xcode profiles
- iOS XMPP框架学习
- Users and Responsibilites in Oracle EBS