以下步骤描述了如何使用 Apache MQ 作为 Mule Pub/Sub 模型的一部分
设置活动 MQ
• 下载 Apache 的 ActiveMQ。我目前使用的是“apache-activemq-5.2.0”版本
• 解压下载到已知位置(例如 C:\MQ\apache-activemq-5.2.0)
• 为 ACTIVEMQ_HOME 设置环境变量 (C:\MQ\apache-activemq-5.2.0\bin\win32)
• 运行 C:\MQ\apache-activemq-5.2.0\bin\win32\InstallService.bat(卸载运行 unInstallService.bat)
• 要验证,请转到控制面板 -> 管理工具 -> 服务并查找 ActiveMQ 服务
• 启动服务(可设置为自动启动)
• 浏览至http://localhost:8161/admin/ 以查看 MQ 仪表板
============
设置 Mule 发布者
为项目创建一个全局元素
拖动 HTTP 连接器并配置
- 将端口号设置为空闲的端口(例如 8075)
- 将“路径”设置为“/pub”
将 JMS 连接器拖到 HTTP 连接器的右侧并进行配置
- 将交换模式设置为“OneWay”
- 选择“主题”并为其命名(例如 MyLocalTopic)
- 从连接器配置下拉菜单中选择全局
之前创建的 Active-MQ 元素
- 设置事务(例如“XATransaction”)
- 设置操作(例如“无”)
流程应该如下所示
<flow name="pubsubFlow1">
<http:listener config-ref="HTTP_Listener_Configuration_8075" path="/pub" doc:name="HTTP_8075"/>
<jms:outbound-endpoint connector-ref="Active_MQ" doc:name="JMS" topic="MyLocalTopic">
<xa-transaction action="NONE"/>
</jms:outbound-endpoint>
设置 Mule 订阅者
将 JMS 连接器拖到设计托盘上并进行配置
- 将交换模式设置为“OneWay”
- 选择“主题”并为其命名(例如 MyLocalTopic)
- 从连接器配置下拉菜单中选择全局
之前创建的 Active-MQ 元素
- 设置交易类型(例如“NoTransaction”)
- 设置操作(例如“无”)
- 将“Logger”连接器拖到 JMS 连接器的右侧,然后
配置
- 设置消息,例如“FIRST SUBSCRIBER - PAYLOAD FROM MQ #[payload]”
如上所述创建第二个 Mule 订阅者项目,但这次将 Logger 消息设置为“SECOND SUBSCRIBER - PAYLOAD FROM MQ #[payload]”。这将允许您看到两个订阅者订阅了同一主题
<flow name="pubsub_readqueueFlow">
<jms:inbound-endpoint topic="MyLocalTopic" connector-ref="Active_MQ" doc:name="JMS">
</jms:inbound-endpoint>
<logger message="FIRST SUBSCRIBER - PAYLOAD FROM MQ #[payload]" level="INFO" doc:name="Logger"/>
</flow>
实际应用
向队列发布消息
使用消息
- 运行两个订阅应用程序
- 刷新仪表板以查看消费者已添加。 (参见示例
下面是我的仪表板)
您还可以通过单击“MyLocalTopic”主题向主题发送消息。在“消息正文”文本中输入一条消息并发送。主题中的消息计数应该增加。
订阅者输出
- 浏览到应用程序日志的位置(对我来说它位于
在:C:\Program Files\mule-standalone-3.7.0\logs)
- 应该为每个订阅者提供一个日志文件。内容应
看起来像下面