我正在测试 WSO2 Message Broker 3.0,但我错过了订阅 WS 端点到主题的功能。能否像在 MB 2.x 中一样使用 MB 3.0 激活此功能?我正在尝试为 WS-Endpoints 实现可靠的(排队的)主题订阅。如何使用 WSO2 MB 3.0 实现它?
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-lib
wso2esb-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.sh
或wso2server.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(跨协议)传输。同样,您可以将标准模式与此设置集成。
希望这会有所帮助!
干杯!