- 浏览: 153193 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xjk112:
2015-05-08 13:21
我奋斗了18年才和你坐在一起喝咖啡[转] -
sandy_vv:
给达内广告,收费 ?
Java 利用url下载MP3保存到本地 -
78945612:
哥们
这个对于初学者怎么整呢?
android 定时关机 -
cn23snyga:
请教贵博,用ACE 绘制出的图表,可以捕捉到点击事件的坐标值 ...
使用achartengine开发曲线图相关的Android应用程序(zhuan) -
qi19901212:
楼主你好,我开发的achartengine放在 scrollv ...
Android开发工具之AChartEngine
与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。
运行后得到下面的输出结果:
Consumer1 get Message:0
Consumer2 get Message:0
Consumer1 get Message:1
Consumer2 get Message:1
Consumer1 get Message:2
Consumer2 get Message:2
Consumer1 get Message:3
Consumer2 get Message:3
Consumer1 get Message:4
Consumer2 get Message:4
Consumer1 get Message:5
Consumer2 get Message:5
Consumer1 get Message:6
Consumer2 get Message:6
Consumer1 get Message:7
Consumer2 get Message:7
Consumer1 get Message:8
Consumer2 get Message:8
Consumer1 get Message:9
Consumer2 get Message:9
说明每一个消息都会被所有的消费者消费。
----------------------------------------------------------------------------------
一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)。对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextMessage,ObjectMessage和BytesMessage是无结构的。一个消息可以包含一些重要的数据或者仅仅是一个事件的通知。
消息的Headers部分通常包含一些消息的描述信息,它们都是标准的描述信息。包含下面一些值:
JMSDestination
消息的目的地,Topic或者是Queue。
JMSDeliveryMode
消息的发送模式:persistent或nonpersistent。前者表示消息在被消费之前,如果JMS提供者DOWN了,重新启动后消息仍然存在。后者在这种情况下表示消息会被丢失。可以通过下面的方式设置:
Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
JMSTimestamp
当调用send()方法的时候,JMSTimestamp会被自动设置为当前事件。可以通过下面方式得到这个值:
long timestamp = message.getJMSTimestamp();
JMSExpiration
表示一个消息的有效期。只有在这个有效期内,消息消费者才可以消费这个消息。默认值为0,表示消息永不过期。可以通过下面的方式设置:
producer.setTimeToLive(3600000); //有效期1小时 (1000毫秒 * 60秒 * 60分)
JMSPriority
消息的优先级。0-4为正常的优先级,5-9为高优先级。可以通过下面方式设置:
producer.setPriority(9);
JMSMessageID
一个字符串用来唯一标示一个消息。
JMSReplyTo
有时消息生产者希望消费者回复一个消息,JMSReplyTo为一个Destination,表示需要回复的目的地。当然消费者可以不理会它。
JMSCorrelationID
通常用来关联多个Message。例如需要回复一个消息,可以把JMSCorrelationID设置为所收到的消息的JMSMessageID。
JMSType
表示消息体的结构,和JMS提供者有关。
JMSRedelivered
如果这个值为true,表示消息是被重新发送了。因为有时消费者没有确认他已经收到消息或者JMS提供者不确定消费者是否已经收到。
除了Header,消息发送者可以添加一些属性(Properties)。这些属性可以是应用自定义的属性,JMS定义的属性和JMS提供者定义的属性。我们通常只适用自定义的属性。
后面会讲到这些Header和属性的用法。
import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import javax.jms.Topic; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.command.ActiveMQTopic; public class TopicTest { public static void main(String[] args) throws Exception { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost"); Connection connection = factory.createConnection(); connection.start(); //创建一个Topic Topic topic= new ActiveMQTopic("testTopic"); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //注册消费者1 MessageConsumer comsumer1 = session.createConsumer(topic); comsumer1.setMessageListener(new MessageListener(){ public void onMessage(Message m) { try { System.out.println("Consumer1 get " + ((TextMessage)m).getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //注册消费者2 MessageConsumer comsumer2 = session.createConsumer(topic); comsumer2.setMessageListener(new MessageListener(){ public void onMessage(Message m) { try { System.out.println("Consumer2 get " + ((TextMessage)m).getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //创建一个生产者,然后发送多个消息。 MessageProducer producer = session.createProducer(topic); for(int i=0; i<10; i++){ producer.send(session.createTextMessage("Message:" + i)); } } }
运行后得到下面的输出结果:
Consumer1 get Message:0
Consumer2 get Message:0
Consumer1 get Message:1
Consumer2 get Message:1
Consumer1 get Message:2
Consumer2 get Message:2
Consumer1 get Message:3
Consumer2 get Message:3
Consumer1 get Message:4
Consumer2 get Message:4
Consumer1 get Message:5
Consumer2 get Message:5
Consumer1 get Message:6
Consumer2 get Message:6
Consumer1 get Message:7
Consumer2 get Message:7
Consumer1 get Message:8
Consumer2 get Message:8
Consumer1 get Message:9
Consumer2 get Message:9
说明每一个消息都会被所有的消费者消费。
----------------------------------------------------------------------------------
一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)。对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextMessage,ObjectMessage和BytesMessage是无结构的。一个消息可以包含一些重要的数据或者仅仅是一个事件的通知。
消息的Headers部分通常包含一些消息的描述信息,它们都是标准的描述信息。包含下面一些值:
JMSDestination
消息的目的地,Topic或者是Queue。
JMSDeliveryMode
消息的发送模式:persistent或nonpersistent。前者表示消息在被消费之前,如果JMS提供者DOWN了,重新启动后消息仍然存在。后者在这种情况下表示消息会被丢失。可以通过下面的方式设置:
Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
JMSTimestamp
当调用send()方法的时候,JMSTimestamp会被自动设置为当前事件。可以通过下面方式得到这个值:
long timestamp = message.getJMSTimestamp();
JMSExpiration
表示一个消息的有效期。只有在这个有效期内,消息消费者才可以消费这个消息。默认值为0,表示消息永不过期。可以通过下面的方式设置:
producer.setTimeToLive(3600000); //有效期1小时 (1000毫秒 * 60秒 * 60分)
JMSPriority
消息的优先级。0-4为正常的优先级,5-9为高优先级。可以通过下面方式设置:
producer.setPriority(9);
JMSMessageID
一个字符串用来唯一标示一个消息。
JMSReplyTo
有时消息生产者希望消费者回复一个消息,JMSReplyTo为一个Destination,表示需要回复的目的地。当然消费者可以不理会它。
JMSCorrelationID
通常用来关联多个Message。例如需要回复一个消息,可以把JMSCorrelationID设置为所收到的消息的JMSMessageID。
JMSType
表示消息体的结构,和JMS提供者有关。
JMSRedelivered
如果这个值为true,表示消息是被重新发送了。因为有时消费者没有确认他已经收到消息或者JMS提供者不确定消费者是否已经收到。
除了Header,消息发送者可以添加一些属性(Properties)。这些属性可以是应用自定义的属性,JMS定义的属性和JMS提供者定义的属性。我们通常只适用自定义的属性。
后面会讲到这些Header和属性的用法。
发表评论
-
命令模式的应用场景
2012-07-10 16:11 2140Command模式通常可应用到以下场景: 1 Mult ... -
java中finally的作用
2012-06-28 13:22 2315java中finally的作用 结论1:当try里面的代码没 ... -
JMS JAR
2012-06-28 13:24 1502相关的JMS Jar包 -
深入掌握JMS(六):JMSReplyTo(转)
2012-02-28 19:31 792在下面的例子中,首先创建两个Queue,发送者给一个Queue ... -
深入掌握JMS(五):DeliveryMode例子(转)
2012-02-28 19:31 793在下面的例子中,分别发送一个Persistent和nonper ... -
深入掌握JMS(三):MessageListener Queue
2012-02-27 22:34 3335深入掌握JMS(三):MessageListener Qu ... -
Spring与ActiveMQ(JMS)的整合说明(zhuan)
2012-02-27 22:30 860Spring与ActiveMQ(JMS)的整合 ... -
深入掌握JMS(一):JMS基础(zhuan)
2012-02-27 22:29 753深入掌握JMS(一):JMS基础 1. JMS基本概念 JM ... -
深入掌握JMS(二)(zhuan)
2012-02-27 22:28 753深入掌握JMS(二):一个JMS例子 前一讲简单的介绍了一下 ... -
java 书籍推荐
2012-03-08 17:46 714《Thinking in Java》 《Effective ... -
java 使用相对路径读取文件(zhuan)
2012-02-24 13:28 1015java 使用相对路径读取文件 1.java project ... -
Java 配置
2012-02-24 10:18 0 -
收藏:JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)(zhuan)
2012-02-23 10:11 10191. MySQL(http://www.mysql.com)m ... -
Java Resource
2012-02-21 13:25 0Struts:http://struts.apac ... -
jsp 导出excel文件,文件名含有中文 出现乱码 解决方案
2012-02-29 20:01 4461jsp 导出excel文件,文件名含有中文 出现乱码 解决方案 ... -
Eclipse 插件
2012-02-15 13:08 0log4j http://logging.apache.or ... -
Java jar
2012-02-14 22:18 0Java jar -
java designpattern
2012-02-14 16:58 0 -
jdbc
2011-12-22 13:20 683package com.yum.amp.util; ... -
java 设计原则(开闭原则)(转载)
2011-10-13 16:23 1390正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Ope ...
相关推荐
- **goo 学网** (http://www.gooedu.cn/Article/en/zhuan4zhuan8/zhidao/) - **东方教育在线** (http://www.neworiental.org/) - **新东方英语 4+1 教程** (http://jxue.com/zt/05zt/zxyy/) - **新概念英语** ...
20. **goo学网** (http://www.gooedu.cn/Article/en/zhuan4zhuan8/zhidao/):包含英语专业四级、八级的指导和资源。 此外,还有**东方教育在线** (www.neworiental.org/) 和 **新东方英语** 提供的4+1教程以及新...
20. **[国教在线](http://www.gooedu.cn/Article/en/zhuan4zhuan8/zhidao/goo)**:英语专四专八考试辅导。 以上网站涵盖了英语学习的各个方面,从基础词汇到高级语法,从口语练习到专业英语,应有尽有。建议大家...
20. **goo学网 (http://www.gooedu.cn/Article/en/zhuan4zhuan8/zhidao/)**:涵盖英语专业四级、八级的学习资料。 21. **东方教育在线 (http://www.neworiental.org/)**:新东方旗下的学习网站,提供英语教学课程。...
小编语:随着计算机设备的不断普及,越来越多的办公自动化设备进入了...本文转自“赛迪网”-“电脑应用”-“办公自动化”专区:http://www0.ccidnet.com/school/zhuan/word.htm 在此向原作者表示敬意。 修订人:Abc5186
在IT领域,特别是网站开发与维护中,域名判断后跳转是一种常见的技术手段,用于根据访问者所使用的不同域名,将他们导向至特定的页面或目录。...掌握这些技术,对于网站开发人员来说是十分必要的。
ECharts是一款由百度开源的,基于JavaScript的数据可视化库,它提供了丰富的图表类型,精美的图表效果,便捷...通过熟练掌握ECharts的API和配置项,我们可以创造出更多富有创意的图表,提升数据展示的质量和用户体验。
先打开conn.asp,把里面的"www.dd2d.cn/zhuan"改成你的网址 2.打开admin/conn.asp,把里面的"www.dd2d.cn/zhuan"改成你的网址 3.打开datebase/#33SSYY.MDB,打开里面的config,把里面的"www.dd2d.cn/zhuan"改成...
bai_zhuan=(int)zhuan/100; shi_zhuan=(int)zhuan0/10; ge_zhuan=(int)zhuan; write_data(table[bai_fen]); write_data(table[shi_fen]); write_data(table[ge_fen]); write_data(table[12]); write...
《蚂蚁集团开源的Java研发框架——gssdgv-zhuan-ke-master_java_详解》 在现代软件开发中,高效、稳定且易维护的框架是项目成功的关键因素之一。蚂蚁集团作为全球知名的金融科技公司,其开源的Java研发框架——...
标题 "zhuan_java_untilgw8_android_" 暗示了这是一个关于使用Java语言在UntilGW8平台上开发Android游戏的项目,特别是一款简单的打砖块游戏。在这个项目中,我们可以深入学习到Java编程语言、Android应用开发的基础...
10. **CCIDNet.com/School/Zhuan/Photoshop6.htm** - **特色**: 特别针对Photoshop 6版本进行深入讲解。 - **适合人群**: 使用Photoshop 6版本的用户。 11. **Mamingzhe.Myrice.com** (Photoshop 6教学网站) - *...
在这个名为"zhuan 2.zip"的压缩包中,包含了一个支持移动端的转盘抽奖程序。这个程序的核心是通过JavaScript实现,使得用户可以通过点击来触发抽奖过程,从而增加用户体验的趣味性和参与度。 首先,我们来看“转盘...
Delphi 将Foxpro表转换为Paradox表,可能不太常用,不过也算是一个简单的数据库格式转换程序吧,或许对编写数据库开发程序有些许帮助。注:本程序运行后会直接读取DBF文件,若DBF报表文件不存在,程序会弹出错误信息...
在IT行业中,转换不同格式的文件是一项常见的任务,特别是在嵌入式系统开发或者软件工程领域。...理解和掌握这种转换技巧对于IT专业人士,尤其是从事嵌入式系统开发的工程师来说,是必备的技能之一。
在给定的“zhuan-su-eliang.rar”压缩包中,包含了一个名为“zhuan su eliang.vi”的虚拟仪器(VI),这显然是一款用于转速测量的应用程序。 转速测量是机械工程、汽车工业、电力系统等领域中常见的技术需求。...
### 2.6.14 内核移植与YAFFS文件系统支持详解 #### 一、2.6.14 内核移植步骤 **1.... - **背景**: 如果您使用的是其他人移植好的内核版本,则在开始编译之前应该清除中间文件。这是为了避免因使用的交叉编译工具不同...
自媒体新媒体软件工具自媒体zhuan钱秘诀资料
"Map o_mapgis_mapgis noteo_mapgis zhuan jpg_out"这部分可能是描述了这个压缩包的主要功能或者过程,即MapGIS的二次开发功能,用于将MapGIS的地图数据转换成JPG格式的光栅图像。"o_mapgis_mapgis noteo_mapgis...
本书全面系统地介绍了电力电子技术的基本原理、电路结构、工作特性及其应用等内容,并且配有丰富的例题和习题,旨在帮助读者深入理解电力电子技术的核心概念和技术要点。 ### 三、课后习题解答的重要性 课后习题是...