JMS教程(六)
2016-01-11 14:07
197 查看
本次测试一下如何接收消费者回复的消息:
接收回复消息的关键是生产者这边也要注册一个临听器。
生产端:
消费端:
接收回复消息的关键是生产者这边也要注册一个临听器。
生产端:
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); Connection connection = factory.createConnection(); connection.start(); // 消息发送到这个Queue Queue queue = new ActiveMQQueue("testQueue1"); // 消息回复到这个Queue Queue replyQueue = new ActiveMQQueue("replyQueue1"); final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建一个消息, Message message = session.createTextMessage(" i'm zy..."); // 并设置它的JMSReplyTo为replyQueue。 message.setJMSReplyTo(replyQueue); // 通过这句代码指定回复的消息传到哪个队列 // 创建生产者 MessageProducer producer = session.createProducer(queue); // 设置消息的保存模式: 持久化的 producer.setDeliveryMode(DeliveryMode.PERSISTENT); // 发送消息 producer.send(message); System.out.println("消息发送成功"); // 创建一个消费者, 来获取接收者回复的消息 MessageConsumer comsumer2 = session.createConsumer(replyQueue); comsumer2.setMessageListener(new MessageListener() { public void onMessage(Message m) { try { System.out.println("接收到的回复信息:"+((TextMessage) m).getText()); } catch (JMSException e) { e.printStackTrace(); } } });
消费端:
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); Connection connection = factory.createConnection(); connection.start(); // 创建会话 false表示可以回送信息 final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建一个目的地,它用来接收消息 Destination destination = session.createQueue("testQueue1"); // 创建消费者 MessageConsumer comsumer = session.createConsumer(destination); comsumer.setMessageListener(new MessageListener() { public void onMessage(Message m) { try { // 输出接收到的消息 System.out.println("Consumer get " + ((TextMessage) m).getText()); System.out.println("回复的目标:" + m.getJMSReplyTo()); // 发送一个回复 // 创建一个新的MessageProducer来发送一个回复消息。 MessageProducer producer = session.createProducer(m.getJMSReplyTo()); // m.getJMSReplyTo() // 取出回复消息的队列 producer.send(session.createTextMessage("Hello i'm receiver")); System.out.println("回复成功"); } catch (JMSException e) { e.printStackTrace(); } } });
相关文章推荐
- Tslib步骤以及出现问题的解决方案【转】
- [转][html]大文件下载
- 揭秘微信营销的十五个特点
- 可执行文件(ELF)格式的理解
- hdoj538Ponds【dfs+拓扑排序】
- IOS第三方框架集合
- session 失效 java.lang.IllegalStateException异常产生的原因及解决办法
- 《从零开始学Swift》学习笔记 (Day 58)—— Swift编码规范之变量或常量声明规范
- 遗留问题
- Linux系统如何查看版本信息
- 你应该知道的RPC原理
- Eclipse 高亮显示选中的相同变量
- Html5添加实用的仿Instagram头部固定跟随滚动特效插件教程
- mysql 慢查询日志
- Android的系统架构及组件
- 图像增强—灰度拉伸
- maven插件mybatis-generator生成代码配置
- httpservletrequest paramater
- 个人作业——软件工程总结
- 常用的算法思想