如何设置Mule Publisher订购者模型

时间:2016-01-19 15:13:39

标签: mule activemq publisher subscriber

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

1 个答案:

答案 0 :(得分:2)

以下步骤描述了如何将Apache MQ用作Mule Pub / Sub Model

的一部分

设置Active 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仪表板

===========

设置骡子发布者

  • 创建骡子项目
  • 右键单击Project属性并选择“Java Build Path”
  • 选择“图书馆”标签,然后点击“添加外部广告”

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

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

  • 选择确定以关闭属性窗口

为项目创建全局元素

  • 选择“创建”

  • 选择连接器配置 - > JMS - > ActiveMQ和OK接受(MQ 将具有默认设置,对于此示例,这是正常的)

拖动HTTP连接器并配置

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

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

  • 将Exchange模式设置为“OneWay”
  • 选择“主题”并为其命名(例如MyLocalTopic)
  • 从“连接器配置”下拉列表中 - 选择“全局” 前面创建的Active-MQ元素
  • 设置交易(例如“XATransaction”)
  • 设置动作(例如“无”)

Flow应如下所示

<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>

设置骡子订阅者

  • 创建骡子项目
  • 右键单击Project属性并选择“Java Build Path”
  • 选择“图书馆”标签,然后点击“添加外部广告”

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

  • 新添加的Jar文件应该在列表中
  • 选择“确定”关闭属性窗口 为项目创建全局元素
  • 选择“创建”
  • 选择连接器配置 - &gt; JMS - &gt; ActiveMQ和OK接受(MQ 将有默认设置,对于此示例可以。)

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

  • 将Exchange模式设置为“OneWay”
  • 选择“主题”并为其命名(例如MyLocalTopic)
  • 从“连接器配置”下拉列表中 - 选择“全局” 前面创建的Active-MQ元素
  • 设置交易类型(例如“NoTransaction”)
  • 设置动作(例如“无”)
  • 将“Logger”连接器拖到JMS连接器的右侧 配置
  • 设置消息,例如“第一个订阅者 - 来自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>

行动中的应用 将消息发布到队列

使用消息

  • 运行两个订阅应用程序
  • 刷新仪表板以查看添加的消费者。 (见例子 我的仪表板如下)

enter image description here

您还可以向主题发送消息,点击“MyLocalTopic”主题。在“消息正文”tex中输入并发送消息。主题中的消息计数应该递增。

订阅者输出

  • 浏览到您的应用程序日志的位置(对我而言,它位于其中 at:C:\ Program Files \ mule-standalone-3.7.0 \ logs)
  • 每个订阅者都应该有一个日志文件。内容应该 看起来像下面 enter image description here