关于ActiveMQ的简单整理(2)
来源:互联网 发布:crm源码怎么安装 编辑:程序博客网 时间:2024/05/29 08:27
今天使用java代码实现Activemq的应答模式。即消息发送者发送一个消息给消费者,消费者接收后返回一个成功消息给发送者。
package com.tgb.model;import javax.jms.Connection;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageListener;import javax.jms.MessageProducer;import javax.jms.ObjectMessage;import javax.jms.Queue;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.command.ActiveMQQueue;public class MessageReply { public static void main(String[] args) throws Exception { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); factory.setTrustAllPackages(true); Connection connection = factory.createConnection(); connection.start(); // 消息发送使用这个Queue Queue queue = new ActiveMQQueue("oneQueue"); // 消息回复使用这个Queue Queue replyQueue = new ActiveMQQueue("replyQueue"); final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建一个消息,并设置它的JMSReplyTo为replyQueue。 User u=new User(); u.setUsername("aa"); u.setMobile("xx"); Message message = session.createObjectMessage(u); message.setJMSReplyTo(replyQueue); MessageProducer producer = session.createProducer(queue); producer.send(message); // 消息的接收者 MessageConsumer comsumer = session.createConsumer(queue); comsumer.setMessageListener(new MessageListener() { public void onMessage(Message m) { try { User user=(User) ((ObjectMessage)m).getObject(); System.out.println("发送成功:"+user.getUsername()+"_"+user.getMobile()); // 创建一个新的MessageProducer来发送一个回复消息。 MessageProducer producer = session.createProducer(m.getJMSReplyTo()); producer.send(session.createTextMessage("回复成功")); } catch (JMSException e1) { e1.printStackTrace(); } } }); // 这个接收者用来接收回复的消息 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(); } } }); }}运行成功后的结果:
发送成功:aa_xx回复成功其中,传输对象消息时必须需要以下代码:
factory.setTrustAllPackages(true);否则会出现以下异常:
javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class com.tgb.model.User! This class is not trusted to be serialized as ObjectMessage payload. Please take a look at http://activemq.apache.org/objectmessage.html for more information on how to configure trusted classes.具体配置及代码可以参照异常中提供的网址。
0 0
- 关于ActiveMQ的简单整理(2)
- 关于ActiveMQ的简单整理(1)
- 关于ActiveMQ的简单整理(3)
- 关于ActiveMQ的简单整理(4)
- 关于ActiveMQ的简单整理(5)
- 关于ActiveMQ的简单整理(6)
- ActiveMQ(二):ActiveMQ的简单入门
- 关于无线网络的简单整理
- 一个简单的JMS实例(activeMQ)
- ActiveMQ的简单实现
- ActiveMQ的简单配置
- activeMQ的简单案例
- ActiveMQ的简单用法
- ActiveMQ的简单使用
- ActiveMq的简单使用
- ActiveMQ的简单使用
- Activemq的简单使用
- ActiveMQ的简单使用
- ECMAScript 6 笔记(三)
- codevs天梯 fibonacci数列水题
- 史上最全最强SpringMVC详细示例实战教程(图文)
- Linux命令行与Shell脚本编程
- flex4 spark 布局
- 关于ActiveMQ的简单整理(2)
- 杭电1002 A+B Problem Ⅱ 简单易懂求解法
- 【长篇高能】ReactiveCocoa 和 MVVM 入门
- codevs天梯 递归第一次 水题
- 敏捷开发流程
- ORA-12012: error on auto execute of job “SYS”.”BSLN_MAINTAIN_STATS_JOB”
- codevs天梯 3n+1问题 暴力水题
- 1038. Recover the Smallest Number (30)
- Educational Codeforces Round 13 D. Iterated Linear Function 逆元+公式+费马小定理