Java 群广播JMS体系结构

Java 群广播JMS体系结构,java,jakarta-ee,glassfish,jms,jms2,Java,Jakarta Ee,Glassfish,Jms,Jms2,我想建立一个广播系统。它由几个小组组成。每个组都有一个用户,可以向同一组的其他成员广播消息。适合这种系统的JMS体系结构是什么 我应该使用持久订阅的主题吗?我不太了解发布/订阅消息的方式,主题可以有多个订阅吗?如果是,则每个订阅代表广播系统中的一个组。如果不是,我应该使用队列,而每条消息都有一个指定组的头,然后使用JMS选择器过滤消息,以便每个成员只接收来自他所在组的消息吗 同时,我也在考虑在消费后坚持这些信息。我决定让每封邮件在一小时后过期,每个成员都应该检查数据库中他错过的每封邮件。但是,如

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

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


同时,我也在考虑在消费后坚持这些信息。我决定让每封邮件在一小时后过期,每个成员都应该检查数据库中他错过的每封邮件。但是,如何在消息过期时启动操作?

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

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

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

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