Java中的ActiveMQ经纪人网络:一些经纪人无法消费

时间:2015-03-16 12:04:57

标签: java activemq

在我们的系统中,同一网络上有2台分布式计算机,每台计算机都有自己的ActiveMQ代理。其中一个(broker1)只有消费者角色,另一个则在某些状态主题上产生一些数据。我们将ActiveMQ配置设置为多播,这样我们就不需要知道代理的IP地址了。 (正如您将看到我们将逐步添加其他一些消费者,这就是我们的问题开始的地方)我们在broker2处生成一些数据并在broker1中监视它们。一切都很好。

我们添加了聊天功能。我们创建了一个“聊天”主题,broker1和broker2都注册为“聊天”作为生产者和消费者。这也很好。

之后,我们决定添加一台新计算机(broker3)。我们还将其ActiveMQ配置设置为多播。问题是,bro​​ker3将一些数据发送到状态主题,并且可以在broker1上看到它们,但是当涉及“chat”时,broker1和broker2再次看到为“chat”生成的所有消息,但broker3仅消耗所生成的消息通过它自己。它不能使用broker1和broker2生成的“chat”消息。我们将broker3的ActiveMQ配置设置为static,将broker1和broker2地址添加为网络连接器。这次,broker3开始监视来自它自己和来自broker1的消息,但它无法监视来自broker2的消息。顺便说一句,broker1和broker2完全按照我们想要的方式工作。

由于这个问题还不够,我们又向网络添加了一台计算机(作为broker4)。无论是在多播还是静态配置中,都可以使用“聊天”消息。它再次只消耗了自己产生的消息。 broker1可以看到broker4发送到状态主题的数据。

以下是计算机的配置:

  • broker1 :Windows 7,32位,1.6 JVM,ActiveMQ 5.8.0
  • broker2 :Windows 7,64位,1.6位32位JVM,ActiveMQ 5.8.0(注册为32位服务)
  • broker3 :Windows XP,32位,1.6 JVM,ActiveMQ 5.8.0
  • broker4 :Windows 7,64位,1.6位32位JVM,ActiveMQ 5.8.0(注册为32位服务)

如您所见,我们为经纪人提供了唯一的名称,我们在所有计算机上关闭了Windows防火墙(我不知道它是否相关,但我做了)。我也尝试将brokerM的64位ActiveMQ服务注册,但它也没有用。

关于网络,在我们公司有一台DHCP服务器,我的桌面上有一个迷你集线器。我在上述场景中提到的所有计算机都是从服务器获取动态IP地址。当我遇到这些问题时,我从集线器插入服务器电缆并将所有计算机IP地址设置为静态。但没有改变。正如我所说,我不知道这些是否相关,但无论如何我都试过了。

我不知道我是在遗漏某些东西还是做错了什么。所以任何帮助都将不胜感激。

此致 Ekip

0 个答案:

没有答案