-1

如何使用 ActiveMQ 设置 Mule Publisher Subscriber 模型?我一直在网上寻找一个简单易懂但无法理解的完整示例。我要做的就是向 MQ 主题发送一个字符串(使用发布者),然后从主题中读取消息(使用订阅者)。没有什么太复杂

4

1 回答 1

3

以下步骤描述了如何使用 Apache MQ 作为 Mule Pub/Sub 模型的一部分

设置活动 MQ

• 下载 Apache 的 ActiveMQ。我目前使用的是“apache-activemq-5.2.0”版本</p>

• 解压下载到已知位置(例如 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 Publisher

  • 创建骡子项目
  • 右键单击项目属性并选择“Java Build Path”</li>
  • 选择“库”选项卡,然后单击“添加外部罐子”

  • 浏览到 MQ jar 文件的位置(例如 C:\MQ\apache-activemq-5.2.0\activemq-all-5.2.0.jar)并选择 OK 接受

  • 新添加的 Jar 文件应该在列表中

  • 选择确定关闭属性窗口

为项目创建一个全局元素

  • 选择“创建”</p>

  • 选择连接器配置 --> JMS --> ActiveMQ 并确定接受(MQ 将具有默认设置,对于本示例来说是可以的)

拖动 HTTP 连接器并配置

  • 将端口号设置为空闲的端口(例如 8075)
  • 将“路径”设置为“/pub”</li>

将 JMS 连接器拖到 HTTP 连接器的右侧并配置

  • 将交换模式设置为“OneWay”</li>
  • 选择“主题”并为其命名(例如 MyLocalTopic)
  • 从连接器配置下拉列表中 - 选择之前创建的 Global 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 订阅者

  • 创建骡子项目
  • 右键单击项目属性并选择“Java Build Path”</li>
  • 选择“Libraries”选项卡并点击“Add External Jars”</p>

  • 浏览到 MQ jar 文件的位置(例如 C:\MQ\apache-activemq-5.2.0\activemq-all-5.2.0.jar)并选择 OK 接受

  • 新添加的 Jar 文件应该在列表中
  • 选择确定关闭属性窗口为项目创建一个全局元素
  • 选择“创建”</li>
  • 选择连接器配置 --> JMS --> ActiveMQ 并确定接受(MQ 将具有默认设置,对于本示例来说是可以的)

将 JMS 连接器拖到设计托盘上并配置

  • 将交换模式设置为“OneWay”</li>
  • 选择“主题”并为其命名(例如 MyLocalTopic)
  • 从连接器配置下拉列表中 - 选择之前创建的 Global Active-MQ 元素
  • 设置交易类型(例如“NoTransaction”)
  • 设置动作(例如“无”)
  • 将“Logger”连接器拖到 JMS 连接器的右侧并配置
  • 设置消息,例如“FIRST SUBSCRIBER - PAYLOAD FROM MQ #[payload]”</li>

如上所述创建第二个 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)
  • 每个订阅者都应该有一个日志文件。内容应如下所示 在此处输入图像描述
于 2016-01-19T15:44:49.247 回答