深入掌握JMS(八):JMSReplyTo
在下面的例子中,首先创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,然后再创建一个消费者来接受所回复的消息。

[java]  view plain copy
  1. import javax.jms.Connection;  
  2. import javax.jms.JMSException;  
  3. import javax.jms.Message;  
  4. import javax.jms.MessageConsumer;  
  5. import javax.jms.MessageListener;  
  6. import javax.jms.MessageProducer;  
  7. import javax.jms.Queue;  
  8. import javax.jms.Session;  
  9. import javax.jms.TextMessage;  
  10. import org.apache.activemq.ActiveMQConnectionFactory;  
  11. import org.apache.activemq.command.ActiveMQQueue;  
  12. public class MessageSendReceiveAndReply {  
  13.     public static void main(String[] args) throws Exception {  
  14.         ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");  
  15.      
  16.         Connection connection = factory.createConnection();  
  17.         connection.start();  
  18.          
  19.         //消息发送到这个Queue  
  20.         Queue queue = new ActiveMQQueue("testQueue");  
  21.         //消息回复到这个Queue  
  22.         Queue replyQueue = new ActiveMQQueue("replyQueue");  
  23.          
  24.         final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);  
  25.         //创建一个消息,并设置它的JMSReplyTo为replyQueue。  
  26.         Message message = session.createTextMessage("Andy");  
  27.         message.setJMSReplyTo(replyQueue);  
  28.          
  29.         MessageProducer producer = session.createProducer(queue);  
  30.         producer.send(message);  
  31.              
  32.         //消息的接收者  
  33.         MessageConsumer comsumer = session.createConsumer(queue);  
  34.         comsumer.setMessageListener(new MessageListener(){  
  35.             public void onMessage(Message m) {  
  36.                 try {  
  37.                     //创建一个新的MessageProducer来发送一个回复消息。  
  38.                     MessageProducer producer = session.createProducer(m.getJMSReplyTo());  
  39.                     producer.send(session.createTextMessage("Hello " + ((TextMessage) m).getText()));  
  40.                 } catch (JMSException e1) {  
  41.                     e1.printStackTrace();  
  42.                 }  
  43.             }  
  44.              
  45.         });  
  46.          
  47.         //这个接收者用来接收回复的消息  
  48.         MessageConsumer comsumer2 = session.createConsumer(replyQueue);  
  49.         comsumer2.setMessageListener(new MessageListener(){  
  50.             public void onMessage(Message m) {  
  51.                 try {  
  52.                     System.out.println(((TextMessage) m).getText());  
  53.                 } catch (JMSException e) {  
  54.                     e.printStackTrace();  
  55.                 }  
  56.             }  
  57.         });  
  58.     }  
  59. }  
 
    首先消息生产者发送一个消息,内容为“Andy”, 然后消费者收到这个消息之后根据消息的JMSReplyTo,回复一个消息,内容为“Hello Andy‘。 最后在回复的Queue上创建一个接收回复消息的消费者,它输出所回复的内容。

    运行上面的程序,可以得到下面的输出结果:

[java]  view plain copy
  1. Hello Andy  

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议