创建 publishes/triggers 主题事件并传递数据的代理服务
Create Proxy Service which publishes/triggers a topic event and passes data
我有一个问题,我不知道如何解决它。我在 WSB2 ESB 4.9.0.
我正在尝试使用事件通过代理调用主题。但是,这永远不会调用订阅它的代理。
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="publishSubscribeTest" startOnLoad="true" trace="disable"
transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="custom">
<property value="********************* START METHOD *********************" name="publishSubscribeTest"/>
</log>
<event topic="TestTopic"/>
<log level="custom">
<property value="********************* END METHOD *********************" name="publishSubscribeTest"/>
</log>
</inSequence>
<outSequence>
<drop/>
</outSequence>
<faultSequence/>
</target>
</proxy>
主题有以下详细信息:
Topic Name: TestTopic
Permissions Details: (Everyone has permission to subscribe and publish)
WS Subscription Details: Another custom proxy in WSO2 has been configured as WS Subscription Details.
所以当第一个代理调用主题时,它应该调用订阅该主题的代理。然而它从未被调用。
这是主题调用的代理:
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="proxyCalledByTopic" startOnLoad="true" trace="disable"
transports="https http" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="custom">
<property value="********************* START METHOD *********************" name="proxyCalledByTopic"/>
</log>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
所以日志应该是这样的:
publishSubscribeTest = ********************* END METHOD
********************* proxyCalledByTopic = ********************* START METHOD ********************* publishSubscribeTest =
********************* START METHOD *********************
不过是这样的:
publishSubscribeTest = ********************* END METHOD
********************* publishSubscribeTest = ********************* START METHOD *********************
所以我理解为订阅中topic调用的proxy没有被调用
有什么建议吗?有帮助吗?
经过一些尝试,pub sub 未触发事件的问题是由于 content-type header 需求未从传入请求中正确填充到代理服务.同样可以通过设置 POST api.
来实现
一旦 content-type header 填充了以下任一值,pub/sub 事件便开始工作。
Content-Type: application/json
Content-Type: application/xml
样本Posts:
XML
POST /TriggerTopic HTTP/1.1
Host: 10.224.234.34:8280
Content-Type: application/xml
Cache-Control: no-cache
Postman-Token: f60c206c-a38e-ed2d-46a0-b051304247be
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Dont forget me this weekend from postman via API</body>
</note>
示例 Post JSON
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"}
我有一个问题,我不知道如何解决它。我在 WSB2 ESB 4.9.0.
我正在尝试使用事件通过代理调用主题。但是,这永远不会调用订阅它的代理。
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="publishSubscribeTest" startOnLoad="true" trace="disable"
transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="custom">
<property value="********************* START METHOD *********************" name="publishSubscribeTest"/>
</log>
<event topic="TestTopic"/>
<log level="custom">
<property value="********************* END METHOD *********************" name="publishSubscribeTest"/>
</log>
</inSequence>
<outSequence>
<drop/>
</outSequence>
<faultSequence/>
</target>
</proxy>
主题有以下详细信息:
Topic Name: TestTopic
Permissions Details: (Everyone has permission to subscribe and publish)
WS Subscription Details: Another custom proxy in WSO2 has been configured as WS Subscription Details.
所以当第一个代理调用主题时,它应该调用订阅该主题的代理。然而它从未被调用。
这是主题调用的代理:
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="proxyCalledByTopic" startOnLoad="true" trace="disable"
transports="https http" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="custom">
<property value="********************* START METHOD *********************" name="proxyCalledByTopic"/>
</log>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</target>
</proxy>
所以日志应该是这样的:
publishSubscribeTest = ********************* END METHOD ********************* proxyCalledByTopic = ********************* START METHOD ********************* publishSubscribeTest = ********************* START METHOD *********************
不过是这样的:
publishSubscribeTest = ********************* END METHOD ********************* publishSubscribeTest = ********************* START METHOD *********************
所以我理解为订阅中topic调用的proxy没有被调用
有什么建议吗?有帮助吗?
经过一些尝试,pub sub 未触发事件的问题是由于 content-type header 需求未从传入请求中正确填充到代理服务.同样可以通过设置 POST api.
来实现一旦 content-type header 填充了以下任一值,pub/sub 事件便开始工作。
Content-Type: application/json
Content-Type: application/xml
样本Posts: XML
POST /TriggerTopic HTTP/1.1
Host: 10.224.234.34:8280
Content-Type: application/xml
Cache-Control: no-cache
Postman-Token: f60c206c-a38e-ed2d-46a0-b051304247be
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Dont forget me this weekend from postman via API</body>
</note>
示例 Post JSON
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"}