读书人

关于ActiveMQ中如何实现一对多发送消息

发布时间: 2012-11-06 14:07:00 作者: rapoo

关于ActiveMQ中怎么实现一对多发送消息讨论

???

???????? 无论采用哪种JMS 组件,JMS 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain 和Pub/Sub Domain。????????? PTP(使用Queue即队列目标)???? 消息从一个生产者传送至一个消费者。在此传送模型中,目标是一个队列。消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息。可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至、并由一个消费者成功使用。如果没有已经向队列目标注册的消费者,队列将保留它收到的消息,并在某个消费者向该队列进行注册时将消息传送给该消费者。 ???????? Pub/Sub(使用Topic即主题目标)???? 消息从一个生产者传送至任意数量的消费者。在此传送模型中,目标是一个主题。消息首先被传送至主题目标,然后传送至所有已订阅此主题的活动消费者。可以向主题目标发送消息的生产者的数量没有限制,并且每个消息可以发送至任意数量的订阅消费者。主题目标也支持持久订阅的概念。持久订阅表示消费者已向主题目标进行注册,但在消息传送时此消费者可以处于非活动状态。当此消费者再次处于活动状态时,它将接收此信息。如果没有已经向主题目标注册的消费者,主题不保留其接收到的消息,除非有非活动消费者注册了持久订阅。 这两种消息传送模型使用表示不同编程域的 API 对象(其语义稍有不同)进行处理。?

?? ????? 在ActiveMQ中针对消息的发送实现类似Queue的队列的一对多实现,保障在消息发送端发送消息,客户端中无论是否启动必须始终可以接收到发送端发送的数据的实现。

目前有两种思路:

1.将一对多的发送消息采用Queue的方式主要将一对多分解为多个点对点的Queue发送消息。

???优点:?简单,容易实现,既保证消息发送的可靠性又实现了相关的功能。

? 缺点:不便于管理,但是比较占用宽带不利于在局域网或者广域网发送消息。

?

2.将一对多发送消息采用发布订阅模式(Topic)模式

???? 需要将启动的时候事先进行消费者注册了持久订阅实现相关的功能,重写部分功能实现。

?

针对第二种方案怎么实现?请知道大侠,指点迷津,多谢了!

?

?

??

?

1 楼 snowwindxf 2011-10-23 你好,请问你现在有没有解决这个问题呢?P2P默认的对应的是pull模式,而pub/sub对应的是push模式,但是目前我想用pub/sub来实现pull模式,请问有什么方案吗? 2 楼 longgangbai 2011-10-23 snowwindxf 写道你好,请问你现在有没有解决这个问题呢?P2P默认的对应的是pull模式,而pub/sub对应的是push模式,但是目前我想用pub/sub来实现pull模式,请问有什么方案吗?
没有方案但是在hornetq中有类似的解决方案。

读书人网 >软件架构设计

热点推荐