上篇我们介绍了,jms实现消息持久化的案例,本篇我们来介绍一个稍微复杂的场景
场景介绍
创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,前一个发送者进行接受处理
实现思路
1.创建一个连接
2.创建两个queue,sendQueue,replyQueue
3.给队列sendQueue发消息,监听这处理从replyQueue回复消息给发送者
一个简单的实例
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();
Queue queue = new ActiveMQQueue("sendQueue");
Queue replyQueue = new ActiveMQQueue("replyQueue");
final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Message message = session.createTextMessage("Andy");
message.setJMSReplyTo(replyQueue);
MessageProducer producer = session.createProducer(queue);
producer.send(message);
System.out.println("send message Andy finish....");
MessageConsumer comsumer = session.createConsumer(queue);
comsumer.setMessageListener(new MessageListener(){
public void onMessage(Message m) {
try {
MessageProducer producer = session.createProducer(m.getJMSReplyTo());
producer.send(session.createTextMessage("Hello " + ((TextMessage) m).getText()));
System.out.println("producer 接收到消息后,回复消息完毕");
} catch (JMSException e1) {
e1.printStackTrace();
}
}
});
MessageConsumer comsumer2 = session.createConsumer(replyQueue);
comsumer2.setMessageListener(new MessageListener(){
public void onMessage(Message m) {
try {
System.out.println("接受到producer回复的消息:"+((TextMessage) m).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
我们来看一下运行结果:
下一篇我们介绍一下,Queue的一些细节