我在设计将在 JBoss ESB 上运行的发布/订阅服务时遇到问题。我需要能够将消息发布到一个主题,大概有 200 个订阅者会收听,一旦他们收到消息,他们就会对消息做一些事情。我正在编写发布服务和一个示例订阅服务来展示它是如何完成的。
我需要保证向这些订户交付。如果他们离线一段时间,并且消息在这段时间内发布,当他们重新上线时,这些消息需要传递。所以我认为这意味着他们需要是持久的订阅者(我的理解是主题不是持久的,但订阅者被定义为持久的)。
我现在有一个发布服务,它将 ESB 消息粘贴到 ESB Aware Queue 上,该队列调用 NotifyTopic,它将消息粘贴到 ESB-Unaware Topic 上。我有一个订阅者,它有一个 ESB-Unaware 主题的侦听器,它使用一个 httprouter 调用一个 web 服务,它发送消息以由我的 web 服务处理。一切正常 - 除非我的 web 服务处于脱机状态(我必须弄清楚如何处理这种情况,但我什至还没有),或者我的 ESB 订阅服务处于脱机状态(我通过卸载它进行测试,发送一个很少发布消息,然后重新安装它 - 没有积压的消息发送到我的网络服务)。
我很确定我没有正确构建订阅者。我认为我需要将订阅者部署在 ESB 上。我不确定它会如何工作,如何将它部署在不同的服务器上,然后仍然连接到 ESB(试图避免与相互 ssl、防火墙、端口等混淆)。我认为将订户安装在 ESB 上将是最佳选择。但我不知道如何让它耐用/保证交货。