Pub-Sub错误处理策略

问题描述 投票:0回答:1

这是我的通道设置。

  1. 一个jdbc消息存储支持的队列。
  2. 连接队列和酒馆子频道的桥接器。
  3. 配置在pub-sub通道上的轮询器是事务型的。

现在,当任何一个订阅者出现异常时,事务就会回滚,消息就会永远重试。该消息再次被所有的订阅者处理。如果这是在至少一个订阅者中发生的永久异常,那么消息就不会被其他任何一个订阅者处理。

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

如何在spring集成中实现?

更多细节在这里...

  1. 如果轮询器被做成事务性的,消息在至少一个订阅者中处理失败,那么消息就会被滚回消息存储,并重试。我还为errorChannel配置了一个jdbc消息存储。每次消息处理失败,消息就会被滚回原来的消息存储中,错误通道消息存储中每重试一次就有一个条目。

  2. 如果将轮询器做成非事务性的,消息在第一个订阅者中处理失败,那么消息就会被放到错误通道,但第二个订阅者永远不会收到消息。

这似乎有什么根本性的问题。是我的配置有问题吗?

spring-integration
1个回答
0
投票

http:/forum.springsource.orgarchiveindex.phpt-75000.html 上文中的讨论解释了该框架与pubsub impl的优缺点。

我们选择了下面的方法。

  1. 投票器将是事务性的,这意味着所有的订阅者都会成功地处理消息,或者没有。消息将对所有子进行重试,直到所有子成功完成。

  2. 错误处理由订阅者负责

  3. 只有系统异常才会冒泡返回到轮询器。业务异常将由用户处理,消息将被手动放到某个错误通道。

© www.soinside.com 2019 - 2024. All rights reserved.