创建 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"}