以下是我的频道设置:
现在,如果在任何一个订阅者中引发异常,则事务将回退并且将永久重试该消息。该消息再次由所有订户处理。如果这是至少订阅者的永久例外,则该消息不会被其他任何订阅者处理。
这里最好的异常处理策略是什么?
我更喜欢订阅者的异常处理,只有失败的订阅者将重试,其他订阅者将处理该消息并继续前进。
如何在Spring集成中实现?
此处有更多细节..
如果轮询器是事务性的并且消息在至少一个订户中处理失败,则该消息将回滚到消息存储库并重试。我还为errorChannel配置了一个jdbc消息存储库。每次消息处理失败时,消息都会回滚到原始消息存储库,并且错误通道消息存储库每次重试都有一个条目。
如果轮询器是非事务性的并且消息在第一个订户中处理失败,则消息将被放入错误通道,但第二个订阅者永远不会收到消息。
看来存在一些根本性的错误。是不是我的配置?
答案 0 :(得分:0)
http://forum.springsource.org/archive/index.php/t-75000.html
上述主题中的讨论解释了与pubsub impl相关的框架的起起落落。
我们选择采用以下方法: 1.轮询器将是事务性的,这意味着所有订阅者都成功处理了消息,或者没有消息。消息将与所有子节点一起重试,直到所有子节点都成功完成。
错误处理是订阅者的责任
只会将系统异常冒泡回轮询器。订阅者将处理业务异常,并且消息将手动放入某个错误通道。