WSO2 esb 4.9.0 支持 Json pub sub
WSO2 esb 4.9.0 support for Json pub sub
当前,当我在 WSO2 ESB 4.9.0 上设置主题时,pub/sub 仅向订阅者端点发送 soap 信封消息。我们能否以按原样发送传入消息的方式设置 ESB?
当我发送消息以发布如下主题时,我收到了所有订阅者的以下肥皂信封回复
POST to Topic
POST /TriggerTopic HTTP/1.1
Host: 10.224.234.34:8280
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 3453ddc5-a279-203a-fecf-38e81bd3ba8b
{"value":"some value"}
订阅者从主题收到回复。
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns:topic xmlns:ns="http://wso2.org/ns/2009/09/eventing/notify">/TestTopic</ns:topic></soapenv:Header><soapenv:Body><jsonObject><value>some value</value></jsonObject></soapenv:Body></soapenv:Envelope>
有没有一种方法可以将请求对象消息按原样传递给所有订阅者?
订阅者必须将内容类型指定为 application/json
样本发布者:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Publisher" transports="http" startOnLoad="true" trace="disable">
<description/>
<target>
<inSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"/>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint>
<address uri="jms:/dynamicTopics/TESTTOPIC?transport.jms.ConnectionFactory=myTopicConnectionFactory"/>
</endpoint>
</send>
</inSequence>
</target>
</proxy>
示例订阅者:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Subscriber" transports="jms" startOnLoad="true" trace="disable">
<description>subscriber</description>
<target>
<inSequence>
<log level="full"/>
</inSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/json</default>
</rules>
</parameter>
<parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
<parameter name="transport.jms.DestinationType">topic</parameter>
<parameter name="transport.jms.Destination">TESTTOPIC</parameter>
</proxy>
使用 SoapUI 将此 json 负载发送到 http://localhost:8280/services/Publisher
:{"value":"some value"}
查找日志:INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:xxx-59490-1467971573210-1:2:1:4:1, Direction: request, Payload: {"value":"some value"}
当前,当我在 WSO2 ESB 4.9.0 上设置主题时,pub/sub 仅向订阅者端点发送 soap 信封消息。我们能否以按原样发送传入消息的方式设置 ESB?
当我发送消息以发布如下主题时,我收到了所有订阅者的以下肥皂信封回复
POST to Topic
POST /TriggerTopic HTTP/1.1
Host: 10.224.234.34:8280
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 3453ddc5-a279-203a-fecf-38e81bd3ba8b
{"value":"some value"}
订阅者从主题收到回复。
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><ns:topic xmlns:ns="http://wso2.org/ns/2009/09/eventing/notify">/TestTopic</ns:topic></soapenv:Header><soapenv:Body><jsonObject><value>some value</value></jsonObject></soapenv:Body></soapenv:Envelope>
有没有一种方法可以将请求对象消息按原样传递给所有订阅者?
订阅者必须将内容类型指定为 application/json
样本发布者:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Publisher" transports="http" startOnLoad="true" trace="disable">
<description/>
<target>
<inSequence>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"/>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint>
<address uri="jms:/dynamicTopics/TESTTOPIC?transport.jms.ConnectionFactory=myTopicConnectionFactory"/>
</endpoint>
</send>
</inSequence>
</target>
</proxy>
示例订阅者:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Subscriber" transports="jms" startOnLoad="true" trace="disable">
<description>subscriber</description>
<target>
<inSequence>
<log level="full"/>
</inSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/json</default>
</rules>
</parameter>
<parameter name="transport.jms.ConnectionFactory">myTopicConnectionFactory</parameter>
<parameter name="transport.jms.DestinationType">topic</parameter>
<parameter name="transport.jms.Destination">TESTTOPIC</parameter>
</proxy>
使用 SoapUI 将此 json 负载发送到 http://localhost:8280/services/Publisher
:{"value":"some value"}
查找日志:INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:xxx-59490-1467971573210-1:2:1:4:1, Direction: request, Payload: {"value":"some value"}