Spring集成,JMS入站通道适配器和事务

| 我正在使用配置有jms:message-driven-channel-adapter的SI。我的用例是从队列中接收一条消息,通过JDBC将其保存到数据库,从队列中提交该消息,然后让该消息根据其类型继续流经各个通道。如果消息随后出现错误,则可以,因为我将原始文件存储在数据库中,因此可以重播该消息。 我的问题是尝试在数据库持久化后立即从队列中提交事务。这实际上是中间流程,我只能让Spring事务管理在最后尝试并提交。这不适合,因为在数据库持久化之后抛出错误,它仍然将消息保留在JMS队列上,因为这是外部事务的起源。 因此,是否有一种简单的方法可以从JMS队列中提取消息,将其保存到数据库,然后将其提交出队列并为剩余的流启动新事务? 谢谢! 丰富     
已邀请:
您可以保存到数据库,然后将消息放在可轮询的通道中:
<channel id=\"aChannel\">
    <queue capacity=\"10\"/>
</channel>
这将使任何后续流程进入新事务,因为新流程将由不同的线程处理-基于与该可轮询通道关联的轮询器。     

要回复问题请先登录注册