JMS(八):JMSReplyTo

JMSReplyTo

          有时消息生产者希望消费者回复一个消息,JMSReplyTo为一个Destination,表示需要回复的目的地。当然消费者可以不理会它。


public class Test6 {

	public static void main(String[] args) throws JMSException {

		//建立与消息服务器的连接:
		ConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
		Connection connection = factory.createConnection();
		connection.start();
		
		// 将生产者生产的消息发送到这个队列:
		Queue queue = new ActiveMQQueue( "testQueue");
		//将消费者回复的消息发送存储到这个队列:
		Queue replyQueue = new ActiveMQQueue("replyQueue");
		
		//创建一个会话:
		final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		
		
		Message message = session.createTextMessage( "我是生产者产生的消息。" );
		message.setJMSReplyTo(replyQueue);
		//创建一个生产者:
		MessageProducer producer = session.createProducer(queue);
		producer.send( message );
		System.out.println( "生产者生产的消息已成功发送到服务器。");
		
		//创建一个消费者: 
		MessageConsumer consumer1 = session.createConsumer(queue);
		consumer1.setMessageListener( new MessageListener(){
			@Override
			public void onMessage(Message message) {
				TextMessage text = (TextMessage) message;
				try {
					System.out.println( "消费者接收消息为:  " + text.getText() + "\n"  );
					System.out.println( "接下来消费者将回复一条消息,于是再创建个生产者,但消息发送到回复队列"+ "\n"  );
					MessageProducer producer = session.createProducer(message.getJMSReplyTo() );
					producer.send( session.createTextMessage("消息已接收."));
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		});
		
		//再创建一个消费者,用来消费回复队列中的消息
		MessageConsumer consumer2 = session.createConsumer(replyQueue);
		consumer2.setMessageListener( new MessageListener(){

			@Override
			public void onMessage(Message message) {
				TextMessage text = (TextMessage) message;
				try {
					System.out.println( "原始生产者确认回复 :  "+ text.getText() + "\n" );
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			
		});
	}

}


结果:

生产者生产的消息已成功发送到服务器。
消费者接收消息为:  我是生产者产生的消息。

接下来消费者将回复一条消息,于是再创建个生产者,但消息发送到回复队列

原始生产者确认回复 :  消息已接收.


转载于:https://my.oschina.net/gently/blog/628854

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值