【问题标题】:How to set up a Mule Publisher Subscriber model [closed]如何设置 Mule 发布者订阅者模型 [关闭]
【发布时间】:2016-04-25 03:16:23
【问题描述】:

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

【问题讨论】:

  • 需要更多关于你在做什么的信息。从 Mule 将数据发布到 AMQ 很简单,但可以通过多种方式完成,具体取决于场景的复杂性

标签: mule activemq publisher subscriber


【解决方案1】:

以下步骤描述了如何使用 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 发布者

  • 创建 Mule 项目
  • 右键单击项目属性并选择“Java Build Path”
  • 选择“Libraries”选项卡并点击“Add External Jars”

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

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

  • 选择确定关闭属性窗口

为项目创建一个全局元素

  • 选择“创建”

  • 选择连接器配置 --> JMS --> ActiveMQ 并确定接受 (MQ 将具有适用于本示例的默认设置)

拖动 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 订阅者

  • 创建 Mule 项目
  • 右键单击项目属性并选择“Java Build Path”
  • 选择“Libraries”选项卡并点击“Add External Jars”

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

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

将 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)
  • 应该为每个订阅者提供一个日志文件。内容应 看起来像下面

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2015-06-10
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多