我遇到wso2 esb的问题。 我写了一个代理,我调用端点对原始输入做了一些更改。但是呼叫前和呼叫后的日志是相同的(它应该是不同的)。似乎这个调用根本不起作用。当我发送respone到outsequence时它是null。任何人都可以说为什么会这样吗? (我在soupUI中测试了我的端点)
这是我的代理人:
<inSequence>
<property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<smooks config-key="smooks-csv1">
<input type="text"/>
<output type="xml"/>
</smooks>
<iterate continueParent="true"
preservePayload="true"
attachPath="//csv-set"
expression="//csv-set/search"
sequential="true">
<target>
<sequence>
<xslt key="gov:/first.xsl"/>
<xslt key="gov:/second.xsl"/>
**<log level="full"/>
<call blocking="true">
<endpoint>
<address uri="MyEndPiont"/>
</endpoint>
</call>
<log level="full"/>**
</sequence>
</target>
</iterate>
<respond/>
</inSequence>
<outSequence>
<aggregate>
<completeCondition>
<messageCount min="0" max="100"/>
</completeCondition>
<onComplete expression="//Guest">
</onComplete>
</aggregate>
</outSequence>
答案 0 :(得分:1)
试试这个。变更清单:
respond
调解员。call
替换为send
。按顺序添加send
。
<inSequence>
<property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<smooks config-key="smooks-csv1">
<input type="text"/>
<output type="xml"/>
</smooks>
<iterate continueParent="true"
preservePayload="true"
attachPath="//csv-set"
expression="//csv-set/search"
sequential="true">
<target>
<sequence>
<xslt key="gov:/first.xsl"/>
<xslt key="gov:/second.xsl"/>
<log level="full"/>
<send>
<endpoint>
<address uri="MyEndPiont"/>
</endpoint>
</send>
</sequence>
</target>
</iterate>
</inSequence>
<outSequence>
<aggregate>
<completeCondition>
<messageCount min="0" max="100"/>
</completeCondition>
<onComplete expression="//Guest">
</onComplete>
</aggregate>
<send />
</outSequence>
答案 1 :(得分:0)
试试blocking="false"
。请注意,进行此更改不会使呼叫调解员成为asynchonus。无论阻塞是真还是假,它都是同步的。阻止只是一个实现细节。
Call mediator用于将消息从ESB发送到 端点。您可以在阻止或非阻塞中调用服务 方式。
以非阻塞模式调用服务时,基础工作程序 线程返回而不等待响应。在阻止模式下, 底层工作线程被阻塞并等待响应之后 将请求发送到端点。在阻止模式下调用mediator是 非常类似于Callout调解员。
在阻塞和非阻塞模式下,Call mediator的行为都在 同步方式。因此,调解在服务后暂停 调用并从序列中的下一个调解器恢复时 收到回复。呼叫中介允许您创建您的 独立于底层架构的配置。