我认为这是一个相当直接的服务链接场景。
我所想做的就是将一些数据转发给代理服务,然后该代理服务将对数据进行迭代,并使用该数据中的ID("entity_ID")(它可以成功检索)来查找WSO2数据服务服务器中的资源。一旦它得到了该请求的结果,我想将其转发到另一个应用程序(在本例中为RequestBin)。
请看下面我的代理配置:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="pollService"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<iterate id="iter1"
expression="//*[local-name()='Change']"
sequential="true">
<target sequence="anon">
<sequence>
<log level="full"/>
<property name="uri.var.entityid" expression="//*[local-name()='entity_id']"/>
<call>
<endpoint>
<http method="get"
uri-template="http://54.66.155.36:9764/services/civicrm/activity/{uri.var.entityid}"/>
</endpoint>
</call>
<log level="full"/>
<call>
<endpoint>
<http method="post" uri-template="http://requestb.in/1c79v711"/>
</endpoint>
</call>
<log level="full"/>
</sequence>
</target>
</iterate>
</inSequence>
</target>
<description/>
</proxy>
我目前没有得到任何迹象表明这两个电话已经响起。
如有任何协助,我们将不胜感激。
谢谢。
您可以启用wirelog并验证调用是否已触发。请参阅下面的博客文章来了解wirelog。
1http://mytecheye.blogspot.in/2013/09/wso2-esb-all-about-wire-logs.html
您是否还可以提供一个示例消息(进入代理的内容),并查看代理中发生的内容的更详细信息,请进入[esb home]/repository/conf/并打开log4j.properties文件,然后设置log4j.category.org.apache.synapse=DEBUG,也可以按照@robin的建议进行。尝试放置
<log level="full" category="DEBUG" separator="-----:-----"/>
在您的代理中,您希望在其中查看此时的消息状态。