spring-integration - 确认春季消息
问题描述
我有一个 spring 集成应用程序,我正在使用消息驱动的通道适配器来使用消息。这是适配器的定义 -
<jms:message-driven-channel-adapter id="messageAdapter" destination="inQueue"
connection-factory="connectionFactory"
error-channel="errorChannel"
concurrent-consumers="${consumer.concurrent-consumers}"
acknowledge="transacted"
transaction-manager="transactionManager"
channel="channel"
auto-startup="true"
receive-timeout="50000"/>
所以这条消息进入我的核心频道,然后通过一系列服务激活器。如果出现错误,则此消息将移至 errorChannel,我在其中处理错误并决定需要对该消息执行什么操作。对于一种情况,我希望消息不回滚到队列,这可能吗?我在我的适配器定义中使用“事务处理”,所以我不确定如何驱动这种行为。任何帮助是极大的赞赏!
解决方案
你没有描述transactionManager
豆子是什么。如果是JmsTransactionManager
,则将其删除,容器将仅使用本地事务。
error-channel
然后,仅当流上的流引发异常时,事务才会回滚。如果该错误流正常退出(“消耗”错误),事务将不会回滚。
如果它是其他一些事务管理器(例如 JDBC),则删除它并在流程稍后启动 JDBC 事务(即不要同步 JMS 和 JDBC 事务;再次使用本地 JMS 事务)。
推荐阅读
- sql - Sqlite 时间字符串转换为 %Y-%m-%d %H:%M:%S
- python - 需要删除重复键而不删除整个字典
- html - 在水平滚动表格中垂直溢出表格单元格
- powershell - Powershell:TCP 侦听器故障排除
- python - 向 Matplotlib 折线图上的每个第三个标记添加文本
- unit-testing - Karma + Jasmine + Durandal + KnockoutJS + RequireJS 单元测试中不匹配的匿名 define() 模块
- swift - *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“线程违规:预期主线程”
- python - 将 CSV 文件中的值读入二维数组
- pandas - 如何从当前日期中减去天数并在熊猫中返回日期对象
- regex - 如何在 While If 语句中使用正则表达式?Perl