我宣布了一个可轮询的频道channel.request,在将频道的paylod转换为一个对象之后,我注意到一些消息已经复制到服务激活器。
我的代码如下:
<int:channel id="channel.request">
<int:queue capacity="10"/>
</int:channel>
<int:header-enricher input-channel="updateImsi.channel"
output-channel="updateImsi.channel.withHeader">
<int:header name="content-type" value="application/json" />
<int:header name="msisdn" expression="payload.split('${separator}')[0]" />
</int:header-enricher>
<int:transformer input-channel="updateImsi.channel.withHeader"
output-channel="channel.request" ref="imsiMsgTransformer"
method="transform">
</int:transformer>
<int:service-activator input-channel="channel.request"
ref="updateImsiHttpResponseMessageHandler" method="handleMessage">
<int:poller fixed-delay="1000"></int:poller>
</int:service-activator>
来自服务激活器和变换器的跟踪:
变压器:m2
serviceactivator payload:m2
变压器:m3
变压器:m4
变压器:m5
serviceactivator payload:m4
serviceactivator payload:m4
serviceactivator payload:m4
答案 0 :(得分:0)
每当调试此类问题时,最简单的方法是打开org.springframework.integration
的DEBUG日志记录并按照消息流进行操作。确保在日志中包含线程名称。如果你仍然无法弄清楚日志上发生了什么。
我的“追踪”中的“最佳”猜测是服务激活器或变压器不是线程安全的。