0

我有一个简单的代理,可以将消息发送到某个 url。我想知道什么时候通过代理发送东西,什么时候发回响应。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="SynchronizeService" transports="https http" startOnLoad="true" trace="disable">
  <target>
    <inSequence>
      <log level="simple"/>

      <send>
        <endpoint key="SynchronizeServiceEndpoint"/>
      </send>
    </inSequence>

    <outSequence>
      <log level="simple"/>

      <send/>
    </outSequence>
  </target>
</proxy>

我添加了日志调解器,但问题是,它没有记录任何允许连接请求和响应的信息。所以示例日志如下所示:

[2013-06-03 15:38:07,914]  INFO - LogMediator To: http://esb-ip:9763/services/SynchronizeService, WSAction: http://test.pl/WebService/getWorkPlan, SOAPAction: http://test.pl/WebService/getWorkPlan, ReplyTo: http://www.w3.org/2005/08/addressing/anonymous, MessageID: urn:uuid:36b60af3-dc30-4004-a239-26523774f52b, Direction: request

[2013-06-03 15:38:08,016]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , ReplyTo: http://www.w3.org/2005/08/addressing/anonymous, MessageID: urn:uuid:8f753934-c64a-4276-a916-dceaeda3def0, Direction: response

在记录的响应中没有关于 SOAPAction 的信息,messageIds 是不同的。如何将请求与日志中的响应联系起来?我想知道何时发送响应。我怎样才能做到这一点?

4

2 回答 2

2

您做了一个简单的日志,它将记录有关消息的非常基本的信息。做一个日志级别=完整,这将记录通过系统传递的完整消息

于 2013-06-03T15:43:54.030 回答
2

我不知道可以在输入序列中分配变量并在输出序列中使用它们。我从输入序列中分配 messageId 并将其记录在输出中。更改后我的代理如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="SynchronizeService" transports="https http" startOnLoad="true" trace="disable">
    <target>
        <inSequence>
            <log level="simple"/>

            <property name="requestSysDate" expression="get-property('SYSTEM_DATE')" scope="default" type="STRING"/>
            <property name="requestMsgId" expression="get-property('MessageID')" scope="default" type="STRING"/>

            <filter xmlns:procsyn="http://test.pl/WebService/Synchronize" xpath="//procsyn:getWorkPlanIn">
                <property name="requestMethod" value="getWorkPlan" scope="default" type="STRING"/>
            </filter>

            <send>
                 <endpoint key="SynchronizeServiceEndpoint"/>
            </send>
        </inSequence>

        <outSequence>
            <log level="custom">
                <property name="proxyName" value="SynchronizeService"/>
                <property name="requestMethod" expression="get-property('requestMethod')"/>
                <property name="requestSysDate" expression="get-property('requestSysDate')"/>
                <property name="requestMsgId" expression="get-property('requestMsgId')"/>
            </log>

            <send/>
        </outSequence>
    </target>
</proxy>
于 2013-06-05T08:59:07.383 回答