我们在GlassFish 3.1.2.2集群(两个实例)中运行一个应用程序,将其结果写入“the_output_queue”。
GlassFish将Message Queue设置为嵌入式代理群集,而后者又有两个直接对应于两个GlassFish实例的消息代理实例。
现在我想使用外部 JMS客户端(想想Android应用程序)来使用the_output_queue的结果。
我假设JMS客户端可以以某种方式透明地访问代理群集,但我无法使其工作。我只成功将JMS客户端连接到一个单独的代理。
如果我有一个 JMS客户端正在运行,连接到一个代理我只得到一半的消息。 GlassFish管理控制台中定义的物理队列(the_output_queue)存在于两个代理中,并且由于负载平衡,消息可以均匀分布。
This text from the Oracle manuals听起来像每个消息都应该在集群的所有代理实例中可用,即如果只有一个JMS消费者正在运行它,它应该接收所有消息,而不管代理是什么实例它连接到。
“家庭经纪人负责路由并将消息传递给目的地的所有消费者,无论这些消费者是本地消费者(连接到家庭经纪人)还是远程消费者(连接到集群中的其他经纪人)。”
我是否完全误解了这一点?
JMS客户端是否可以透明地访问Oracle Message Queue代理群集? 连接字符串将如何显示?
是否有一些JMS客户端可以连接的“全局集群目标”(而不是单个代理)?我在哪里可以找到群集的连接详细信息?
我必须验证GlassFish设置中有什么特别之处吗?目前的设置是(jelastic.com创建的默认设置,对我来说很好):
JMS可用性:
启用GMS
答案 0 :(得分:0)
回答主要问题:是的,JMS客户端可以连接到群集的任何实例,GlassFish将复制消息。我在我的电脑上测试了它。
讨论了Jelastic中的问题in this posting。