JavaEE5学习笔记03-JMS介绍与使用---3

发布/订阅Pub-Sub消息

Pub-Sub有点1对多的意思,一个消息生产者,多个消息消费者共同接收。首先我们在JBoss中配置一个消息主题,生产者实际上是对此消息主题发送消息的,消息消费者实际上也是对此主题的消息进行接收的。
JavaEE5学习笔记03-JMS介绍与使用---3
 

在此我们配置了一个名字叫做jbossJMSTopic的消息主题。

因为JMS1.1的标准在代码上已经完全屏蔽了PTPPub-Sub的差异性,所以我们上面的代码可以修改一下重复利用

消息消费者修改目的

Destination dest = (Destination) context.lookup("jbossJMSTopic");

消息生产者修改目的

Destination dest = (Destination) context.lookup("jbossJMSTopic");

其他代码不同变更

下面我们为了查看消息群发的效果,执行2遍消息消费者目的的代码,之后执行1遍消息生产者,看到的效果如下:

2个消息消费者控制台

其中一个消费者

textMessagedelegator->JBossMessage[21259541532164102]:PERSISTENT, deliveryId=0

消息内容hello 速速

另一个消费者

textMessagedelegator->JBossMessage[21259541532164102]:PERSISTENT, deliveryId=0

消息内容hello 速速

这证明了2个消费者都接收到了此消息。

当然,异步消费也和上面代码一样,就是替换一个目的地址就可以,底层的实现为开发者屏蔽了这些不同JMS信息模式的差异。

1.       JMS消息常用的属性配置

JMS的消息再发送之前还可以设置一些消息属性

1.传递方式:

持久化保存消息

sender.setDeliveryMode(DeliveryMode.PERSISTENT);

不用持久化保存消息

sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

2.消息的有效期时间

sender.setTimeToLive(2000);

代表此消息2秒后就作废了,即使是将消息持久化到一个物理空间上,2秒钟后也会删除。如果不设置,默认是永远不会过期的。

3.消息的优先级

sender.setPriority(9);

将此消息设置成优先级最大的9,相当于500里加急文书!。默认的优先级是4

当然之前所有做的一切属性设置,最后如果调用了MessageProducer.send(消息实体,存储模式 , 优先级, 有效时间);这种最终、比较全面的方法所覆盖。

你可能感兴趣的:(jboss,jms)