我可以在链中使用delayer元素吗?

时间:2015-01-23 10:27:15

标签: spring-integration

我有以下配置:

<jms:inbound-gateway request-channel="requestChannel"
                     request-destination="requestQueue"
                     default-reply-destination="replyQueue"
                     connection-factory="connectionFactory"/>

<chain input-channel="requestChannel">
   <transformer ref="xmlTransformer" method="fromXml"/>
   <service-activator ref="myService" method="service"/>
   <transformer ref="xmlTransformer" method="toXml"/>
   <!--<delayer id="replyDelayer" default-delay="1000"/>--> 
</chain> 

我想延迟回复以进行调试。

没有延迟器,配置工作正常。当我添加延迟器时,重播不会到达回复目的地。

是否使用了延迟器?我没有使用此配置获得任何xsd警告。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

刚刚测试了这个案例,对我来说效果很好。

有几点要考虑:

  • <jms:inbound-gateway>默认使用receiveTimeout = 5000。但是,我发现<delayer>仅针对1000延迟MessageStore。所以,应该够了

  • 如果您的delayer使用持久性<int:header-enricher> <int:header-channels-to-string /> </int:header-enricher> ,您应该使用:

    replyChannel

    也将delay task标题存储到数据库中。并从{{1}}。

  • 恢复

否则请分享StackTrace。