2011-07-18 97 views
0

这是我的频道设置:发布 - 订阅错误处理策略

  1. 一个JDBC消息存储备份队列
  2. 队列连接到发布 - 订阅通道
  3. 轮询器桥配置在pub-sub频道上是事务性的

现在,如果在任何一个订阅者中引发异常,那么事务回滚并且消息将被重试。该消息再次由所有订户处理。如果这在至少是用户中是一个永久的异常,那么这个消息不会被其他用户处理。

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

这怎么能在春季集成中实现?

更多细节在这里..

  1. 如果轮询由交易和消息在用户中的至少一个失败处理,则该消息被回滚到邮件存储和重试。我还为errorChannel配置了一个jdbc消息存储。每次消息处理失败时,消息都会回滚到原始消息存储,并且错误通道消息存储每次重试都有一个条目。

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

看起来有一些根本性的错误。是否与我的配置?

回答

0

http://forum.springsource.org/archive/index.php/t-75000.html
上述线程中的讨论解释了框架在pubsub impl方面的优缺点。

我们选择使用下面的方法: 1.轮询将是事务性的,意味着所有订阅者都成功处理消息或不处理消息。消息将重试所有潜艇,直到所有潜艇完成成功。

  1. 错误处理是用户的责任

  2. 只有系统异常会起泡回轮询。业务异常将由订户处理,并且该消息将手动置入某个错误通道。