0

我已经使用SeekToCurrentErrorHandler测试了我的服务有一个实例,该实例在一个消费者组中有一个消费者。在失败的情况下,重试发生并且记录被提交,因为我有用户ACK 模式作为 RECORD 并且没有使用 ACK 模式作为 MANUAL,因为这会产生问题。

现在,让我们再有 2 个我的服务实例,它具有相同的消费者和相同的消费者组。

我的问题:如果记录已由第一个实例提交,这两个新实例是否会像第一个实例一样重试?

  ContainerProperties containerProperties = factory.getContainerProperties();
  containerProperties.setAckOnError(false);
  containerProperties.setAckMode(AckMode.RECORD);
  containerProperties.setErrorHandler(new SeekToCurrentErrorHandler());

配置

STCEH

4

1 回答 1

0

当您在同一个组中有多个消费者时,每个消费者将获得分区的一个子集;每个消费者都是独立的;实例之间没有通信。

如果消费者 1 在重试期间死亡,并且其分区分配给另一个消费者,则重试将从头开始。

没有关于重试的持久数据,只有当前消费者的内存中。

于 2020-06-15T14:29:53.070 回答