Spring集成 - 缺少消息

时间:2014-07-03 15:40:18

标签: spring-integration

我有一个主要运行的集成应用程序,但昨天注意到一条消息丢失了。当时,服务激活器端点非常忙于处理先前的消息。

基本上,我的整合流程是: jdbc:inbound-channel-adapter - >分离器 - >聚合器(基于类型字段) - > [可调整频道] - >服务活化剂

从日志中,我可以看到一组消息被轮询,拆分,聚合,过期(通过消息存储收割机),并放置在创建通道上。日志中有一个preSend和postSend事件,用于将消息放在creationChannel上,但这就是它的结束。它永远不会到达我的服务激活器,jdbc消息存储库中没有消息,我也没有看到任何错误。

我是如何配置服务激活器或轮询器(或组合)的?

以下是适用于该问题的配置。

<int:poller default="true" fixed-delay="1000" receive-timeout="0" />    
<int-jdbc:message-store id="jdbc-messageStore" data-source="dataSource"  /> 

<int:channel id="creationChannel" >
   <int:queue  message-store="jdbc-messageStore" />
</int:channel>               

<!-- Endpoint responsible for creating Archive from List of Document objects -->
<bean id="archiveCreator" class="org.abc.ArchiveCreator"/>

<int:service-activator ref="archiveCreator" method="createArchive" input-channel="creationChannel" />

1 个答案:

答案 0 :(得分:0)

首先,您应将<poller>标记为<transactional>

另一个点切换org.springframework.integration DEBUG日志记录级别,并在消息丢失时显示日志。