JMS使用者如何在Oracle Message Queue的代理CLUSTER上工作?

时间:2013-05-30 14:16:35

标签: oracle cluster-computing glassfish-3 messaging

我们在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可用性:

  • JMS服务类型:嵌入式
  • JMS群集类型:常规
  • JMS配置商店类型:主经纪人
  • JMS消息存储类型:文件

启用GMS

1 个答案:

答案 0 :(得分:0)

回答主要问题:是的,JMS客户端可以连接到群集的任何实例,GlassFish将复制消息。我在我的电脑上测试了它。

讨论了Jelastic中的问题in this posting