Spring integration 事务和聚合器

Spring integration 事务和聚合器,spring-integration,Spring Integration,我看过聚合器的代码,据我所知,它执行以下操作: 向组中添加消息 如果可以释放该组,则: 完成组并将其发送到输出/回复通道 如果(使组过期) 从邮件存储中删除组和邮件 否则仅删除邮件 在这里,我需要一些ACID事务支持来完成全部或什么都不做,但在阅读文档之后,我找不到如何完成。你能告诉我这是否可能,如果可能,我怎样才能做到 提前谢谢 重视 Guzman您可以使到聚合器的入站(直接)通道具有事务性 <tx:advice id="txAdvice" transaction-manager="tr

我看过聚合器的代码,据我所知,它执行以下操作:

向组中添加消息 如果可以释放该组,则: 完成组并将其发送到输出/回复通道 如果(使组过期) 从邮件存储中删除组和邮件 否则仅删除邮件

在这里,我需要一些ACID事务支持来完成全部或什么都不做,但在阅读文档之后,我找不到如何完成。你能告诉我这是否可能,如果可能,我怎样才能做到

提前谢谢

重视 Guzman

您可以使到聚合器的入站(直接)通道具有事务性

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="send" />
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut id="aggTx" expression="execution(* *.send(..)) &amp;&amp; bean(toAggChannel)" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="aggTx" />
</aop:config>

这将处理正常的交付和释放

要使退出的部分组具有事务性,请使用
MessageGroupStoreReaper
并以类似方式使
MessageGroupStore.expireMessageGroups()方法具有事务性


当使用
组超时
组超时表达式
时,当前无法使事务中的部分组过期

您希望在事务范围内做什么?所有的添加和发布?发布后,添加一条消息并删除组中的所有消息