Pub-Sub错误处理策略

时间:2011-07-18 11:35:22

标签: spring-integration

以下是我的频道设置:

  1. jdbc消息存储支持的队列
  2. 将队列连接到pub-sub通道的桥梁
  3. 在pub-sub频道上配置的轮询器是事务性的
  4. 现在,如果在任何一个订阅者中引发异常,则事务将回退并且将永久重试该消息。该消息再次由所有订户处理。如果这是至少订阅者的永久例外,则该消息不会被其他任何订阅者处理。

    这里最好的异常处理策略是什么?
    我更喜欢订阅者的异常处理,只有失败的订阅者将重试,其他订阅者将处理该消息并继续前进。

    如何在Spring集成中实现?

    此处有更多细节..

    1. 如果轮询器是事务性的并且消息在至少一个订户中处理失败,则该消息将回滚到消息存储库并重试。我还为errorChannel配置了一个jdbc消息存储库。每次消息处理失败时,消息都会回滚到原始消息存储库,并且错误通道消息存储库每次重试都有一个条目。

    2. 如果轮询器是非事务性的并且消息在第一个订户中处理失败,则消息将被放入错误通道,但第二个订阅者永远不会收到消息。

    3. 看来存在一些根本性的错误。是不是我的配置?

1 个答案:

答案 0 :(得分:0)

http://forum.springsource.org/archive/index.php/t-75000.html
上述主题中的讨论解释了与pubsub impl相关的框架的起起落落。

我们选择采用以下方法: 1.轮询器将是事务性的,这意味着所有订阅者都成功处理了消息,或者没有消息。消息将与所有子节点一起重试,直到所有子节点都成功完成。

  1. 错误处理是订阅者的责任

  2. 只会将系统异常冒泡回轮询器。订阅者将处理业务异常,并且消息将手动放入某个错误通道。