JMS(八):JMSReplyTo

原创
2016/03/02 21:54
阅读数 210

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();
				}
			}
			
		});
	}

}


结果:

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

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

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


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部