0

我正在测试 WSO2 Message Broker 3.0,但我错过了订阅 WS 端点到主题的功能。能否像在 MB 2.x 中一样使用 MB 3.0 激活此功能?我正在尝试为 WS-Endpoints 实现可靠的(排队的)主题订阅。如何使用 WSO2 MB 3.0 实现它?

4

1 回答 1

1

WS-Eventing 从 WSO2 MB 3.0.0 中删除。但是您可以通过将 WSO2 MB 与 WSO2 ESB 集成来实现这一点。这是用于可靠消息传递的广泛使用的通用集成模式,您还可以根据需要在 WSO2 ESB 中修改/调解消息,然后再发送到实际后端。让我们看看如何做到这一点。

我将向您展示如何在本地计算机中集成 WSO2 ESB 和 WSO2 MB。

  • 从http://wso2.com/products/enterprise-service-bus/下载 WSO2 ESB 4.9.0(最新版本)。希望您已经拥有 WSO2 MB 3.0.0(最新版本)。

  • 解压后,打开 wso2esb-4.9.0/repository/conf/carbon.xml 文件并更改<Offset>0</Offset><Offset>1</Offset>. 这允许您在单台机器上运行多个碳服务器。可以访问管理控制台https://localhost:9444/carbon

  • 打开 wso2esb-4.9.0/repository/conf/axis2/axis2.xml 并取消注释<!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x-->JMS 传输接收器之后<!--uncomment this and configure to use connection pools for sending messages-->的部分和 JMS 传输发送器之后的部分。

  • 复制到andes-client-3.0.1.jar geronimo-jms_1.1_spec-1.1.0.wso2v1.jar org.wso2.securevault-1.0.0-wso2v2.jar_wso2mb-3.0.0/client-libwso2esb-4.9.0/repository/components/lib

  • 将以下条目添加到wso2esb-4.9.0/repository/conf/jndi.properties

    connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'

    connectionfactory.TopicConnectionFactory = amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'

    topic.MyDurableTopic = MyDurbleTopic

  • 首先启动 WSO2 MB,然后根据您使用的操作系统通过运行wso2server.shwso2server.bat在文件夹中启动 WSO2 ESBbin

  • 整合完成。

让我们看看如何创建在 WSO2 MB 中创建持久订阅的 JMS 侦听器代理。转到 ESB 管理控制台,选择代理服务 -> 自定义代理 -> 切换到源视图。然后复制并粘贴到突触配置下方以创建 JMS 侦听器。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
      name="MyDurableTopicListenerProxy"
      transports="jms"
      statistics="disable"
      trace="disable"
      startOnLoad="true">
  <target>
     <inSequence>
        <property name="OUT_ONLY" value="true"/>
        <log level="custom">
           <property name="STATE" value="dispatch message..."/>
        </log>
        <send>
           <endpoint>
              <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
           </endpoint>
        </send>
     </inSequence>
     <outSequence>
        <send/>
     </outSequence>
  </target>
  <parameter name="transport.jms.ContentType">
     <rules>
        <jmsProperty>contentType</jmsProperty>
        <default>text/xml</default>
     </rules>
  </parameter>
  <parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
  <parameter name="transport.jms.DestinationType">topic</parameter>
  <parameter name="transport.jms.SubscriptionDurable">true</parameter>
  <parameter name="transport.jms.Destination">MyDurbleTopic</parameter>
  <parameter name="transport.jms.DurableSubscriberName">subId-x</parameter>
  <parameter name="transport.jms.CacheLevel">consumer</parameter>
  <parameter name="transport.jms.DurableSubscriberClientID">subId-x</parameter>
  <description/>
</proxy>

您可以通过更改<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>. 在这里,我使用了示例 axis2 后端。保存代理服务后,它将使用 WSO2 MB 中的 MyDurableTopic 创建持久订阅。您不需要在 WSO2 MB 中创建 MyDurableTopic。订阅将创建一个持久主题(根据 JMS 规范)。

现在您可以将消息发送到持久主题并查看这些消息发送到 WS 端点。这是 JMS 到 HTTP(跨协议)传输。同样,您可以将标准模式与此设置集成。

希望这会有所帮助!

干杯!

于 2016-01-15T05:49:25.007 回答