1

我正在使用 ActiveMQ 和 MQTT 协议构建一个带有大型设备的系统,我在独立服务器上使用的模型包含两个应用程序,如下所示:

  • App1:企业应用程序从大量设备接收消息:设备每3分钟通过主题发布到服务器:[设备] --- MQTT 协议 --> [ActiveMQ] --- Openwire 协议 --> [Glassfish with EJB using MDB订阅主题] --> Oracle DB

  • App2:来自Oracle DB的企业应用程序扫描命令并发送到大量设备:每个设备订阅一个唯一的主题,例如:device.0000001,然后服务器将在从服务器收到设备命令时发布到该主题[大量设备] < --- MQTT --- [ActiveMQ] <--- Openwire -- [Glassfish with EJB timer scan and publish] <-- Oracle DB <-- Web with commands

您能帮我了解一下企业模型以支持使用多服务器的大量设备吗?App1 的临时解决方案:我正在使用列表 ActiveMQ 服务器中的随机服务器来连接和发布消息。每台服务器,我都部署了独立的 ActiveMQ 和 App1 来订阅消息。

但是 App2:我只构建了一台服务器来扫描和发布消息。

哪个服务器可以发布到哪个设备连接到 ActiveMQ 的最佳模型的问题?可以将消息主题转换为队列,然后使用代理网络和多 App1 来处理唯一消息吗?

4

1 回答 1

2

MQTT 协议使用仅包含主题的发布/订阅模型,而不是队列,因此您需要扩展主题。

ActiveMQ 支持各种横向扩展模型:主从,代理网络:http: //activemq.apache.org/clustering.html

为了更好地处理横向扩展,您还可以考虑通过使用 Apache Camel 将消息路由到 ActiveMQ http://camel.apache.org/how-does-camel-work-with-activemq.html来实现企业集成模式

于 2014-07-16T19:06:37.527 回答