gpt4 book ai didi

jakarta-ee - 如何使用Glassfish的JMS Broker将消息“代理”到Internet上的JMS Broker?

转载 作者:行者123 更新时间:2023-12-04 17:22:02 24 4
gpt4 key购买 nike

我正在运行在本地Glassfish3安装上运行的Java EE 6企业应用程序。我的一个EJB需要将消息发送到位于Internet上某个地方的远程JMS Broker。

不幸的是,Internet连接相当不可靠,所以我的想法是首先将消息发送到本地Glassfish自己的JMS Broker。然后,我的本地代理将邮件转发到远程代理。如果Internet连接不可用,则本地代理只需等待连接恢复即可。

我认为这行得通吗?如果是这样,我将非常感谢一些入门方法。

最佳答案

对于这种情况(当远程端点并非始终可用时),这种方法是完全有效的,并且称为“存储转发”消息传递。实际上,许多应用程序服务器都提供了开箱即用的支持,例如WebLogic及其Store and Forward服务:


SAF服务使WebLogic Server能够在跨WebLogic Server实例分布的应用程序之间可靠地传递消息。例如,使用SAF服务,在本地WebLogic Server实例上运行或连接到本地WebLogic Server实例的应用程序可以可靠地将消息发送到驻留在远程服务器上的终结点。如果由于网络问题或系统故障而导致在发送消息时目的地不可用,则消息将保存在本地服务器实例上,并在消息可用时转发到远程端点。


对于Open MQ(GlassFish的JMS实现),我知道存储和转发消息传递已包含在功能计划中(请参阅2007年的this presentation)。但是我很难找到确切的状态(this one之类的消息并不能真正弄清情况)。可以肯定的是,GlassFish v3使用Open MQ 4.4,并且Open MQ 4.4具有JMS桥(存储和转发是必需的),并且您可以将其用于代理与代理之间的通信。有关如何配置的信息,请参见this recent blog post(找不到Open MQ 4.4的文档!)。就个人而言,我会在开发邮件列表中发布一条消息。

现在,如果还不清楚,或者您没有得到满意的答案,总是可以编写一个自定义应用程序来使用消息并将其转发给其他代理,这并不那么复杂。基本上,存储和转发消息传递意味着对应用程序使用“本地”持久队列,并使用MDB消耗消息并将它们发送到远程JMS目标(在单个事务中)。这将需要进行一些进一步的测试,但是作为JMS客户端,处理转发的MDB应该能够透明地重新连接到远程目标。

关于jakarta-ee - 如何使用Glassfish的JMS Broker将消息“代理”到Internet上的JMS Broker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2155230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com