Spring集成:从可轮询通道接收重复的消息

时间:2015-10-21 10:33:51

标签: spring-integration

我宣布了一个可轮询的频道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

1 个答案:

答案 0 :(得分:0)

每当调试此类问题时,最简单的方法是打开org.springframework.integration的DEBUG日志记录并按照消息流进行操作。确保在日志中包含线程名称。如果你仍然无法弄清楚日志上发生了什么。

我的“追踪”中的“最佳”猜测是服务激活器或变压器不是线程安全的。