【问题标题】:How to distribute an event to all nodes in a (Wildfly) cluster?如何将事件分发到(Wildfly)集群中的所有节点?
【发布时间】:2017-11-11 06:40:19
【问题描述】:
我想在我的JavaEE 7 WebApp 中较长运行进程的状态发生变化时通知集群中的所有节点,以便每个节点可以依次通过 WebSocket 通知其客户端有关该更改的信息。
我在集群环境中使用 Wildfly 10。
什么JavaEE 7 API / 编程模型或 Wildfly 服务将是当今实现这一目标的最佳实践?
【问题讨论】:
标签:
jakarta-ee
ejb
wildfly
distributed-computing
java-ee-7
【解决方案1】:
如果您想留在 JavaEE 生态系统中,那么 JMS 主题是必经之路。主题就像广播频道 - 每个订阅它的消息侦听器都将获得该消息的副本。在 wildfly 集群/域中,您需要启用 JMS(使用完整配置文件或手动添加消息传递子系统),然后启用集群消息传递,最后创建一个 jms 主题,您的通知客户端将向其中写入消息。您可以在 official wildfly quickstart repo 中找到完整示例 - 查看 helloworld-mdb 和 messaging-clustering 模块。
您还可以使用在您的 java 环境之外运行的专用 PubSub 服务,并让您的应用程序为某些特定事件(例如 Redis 或 Apache camel ......)创建订阅者,但 Wildfly 中的消息传递很简单,并且适用于大多数用例。