1

我想建立一个广播系统。它由几个组组成。每个组都有一个用户,可以向同一组的其他成员广播消息。适合这种系统的 JMS 架构是什么?

我应该使用具有持久订阅的主题吗?我不太了解 pub/sub 消息传递样式,主题可以有多个订阅吗?如果是这样,那么每个订阅代表广播系统中的一个组。如果不是,我是否应该使用队列,而每条消息都有一个指定组的标头,然后使用 JMS 选择器过滤消息,以便每个成员只接收来自他所在组的消息?

另外,我正在考虑在消费后保留消息。我决定让每条消息在一小时后过期,每个成员都应该检查数据库中他错过的每条消息。但是,如何在消息过期时触发操作?

4

1 回答 1

1

可以使用主题...主题可以有多个订阅者。每个组可以使用不同的主题。用户可以向该主题发送消息,所有订阅者都会收到它。

只有当订阅者可以离线一段时间并且订阅者的消息不应该丢失时,才需要持久订阅者。

队列不适用于一对多场景。但是,如果您有一组预定义的接收器,您可以为每个接收器使用一个队列并将消息路由到该队列。但这是将消息路由到接收者队列的开销。您建议的 JMS 选择器想法可行,但对于队列,只有一个客户端可以接收消息。在主题中,它分发给对该主题感兴趣的所有客户。

通常人们会将数据持久化到数据库而不是消息本身。因此,您可以持久保存到数据库,然后创建要传递的消息。

于 2014-02-20T16:48:41.047 回答