这是我的频道设置:
- 一个 jdbc 消息存储支持的队列
- 将队列连接到发布-订阅通道的桥接器
- pub-sub 通道上配置的 poller 是事务性的
现在,当任何一个订阅者出现异常时,事务就会回滚,并且消息会永远重试。该消息再次被所有订阅者再次处理。如果这至少在订阅者中是一个永久异常,则该消息不会被其他订阅者处理。
这里最好的异常处理策略是什么?
我更喜欢对订阅者进行异常处理,即只有失败的订阅者会重试,其他订阅者将处理消息并继续。
这如何在spring集成中实现?
更多细节在这里..
如果轮询器是事务性的并且消息在至少一个订阅者中处理失败,则消息将回滚到消息存储并重试。我还为errorChannel 配置了一个jdbc 消息存储。每次消息处理失败时,消息都会回滚到原始消息存储,并且错误通道消息存储每次重试都有一个条目。
如果轮询器是非事务性的,并且消息在第一个订阅者中处理失败,那么消息将被放入错误通道,但第二个订阅者永远不会收到消息。
似乎有一些根本性的错误..是我的配置吗?