文档章节

JMS(八):JMSReplyTo

berg-dm
 berg-dm
发布于 2016/03/02 21:54
字数 406
阅读 32
收藏 0

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

}


结果:

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

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

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


© 著作权归作者所有

berg-dm
粉丝 26
博文 98
码字总数 88970
作品 0
深圳
程序员
私信 提问
深入剖析一条JMS消息(消息头)

一个Message对象有3个部分:消息头,消息属性,最后就是消息数据自身,它称为有效负载或消息体。消息能够携带重要的数据或仅仅用于系统中的事件通知。在大多数情况下,消息同时作为通知和携带...

柳哥
2014/10/26
3.4K
0
SpringFramework4系列之SpringJMS:(五)Jms namespace的使用

Spring jms 的命名空间 xmlns:jms=" xsi:schemaLocation="http://www.springframework.org/schema/jmshttp://www.springframework.org/schema/jms/spring-jms.xsd" Spring jms 的命名空间元素......

Garrry
2015/07/07
1K
0
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
395
1
Tomcat 容器与servlet的交互原理

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器...

watermelon11
02/25
114
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
21分钟前
3
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部