0

我有以下用例:

  1. 假设您有两个处理事件 U 的微服务 AccountManagement 和 ActivityReporting。
  2. 当用户注册时,包含用户信息的事件U会发布到一个broker中,供两个微服务处理。
  3. 出于性能和可扩展性的原因,AccountManagement 和 ActivityReporting 微服务在两个实例中复制
  4. 每个微服务实例都有一个监听代理主题的消费者。主题的选择是让AccountManagement 和ActivityReporting 都可以同时处理U。

但是,我只希望 AccountManagement 的一个实例来处理事件 U,而 ActivityReporting 的一个实例来处理事件 U。

请分享您实施“每个应用程序组消费一次”代理系统的经验。

因为这将有效地解决这个问题。

4

2 回答 2

0

我会推荐Cadence Workflow,它是更强大的微服务编排解决方案。

与为您的用例使用队列相比,它提供了很多优势。

  • 建立了指数重试,具有无限的过期间隔
  • 故障处理。例如,如果在配置的时间间隔内两次更新都不能成功,它允许执行通知另一个服务的任务。
  • 支持长时间运行的心跳操作
  • 能够实现复杂的任务依赖。例如,在不可恢复的故障 ( SAGA )的情况下实现调用链或补偿逻辑
  • 提供对当前更新状态的完整可见性。例如,当使用队列时,您都知道队列中是否有一些消息,并且您需要额外的数据库来跟踪整体进度。使用 Cadence 记录每个事件。
  • 能够取消飞行中的更新。

请参阅有关Cadence 编程模型的演示文稿。

于 2019-06-15T23:52:40.810 回答
0

如果所有来自不同实例的消费者侦听器都具有相同的group.id属性,那么其中只有一个会收到消息。您需要在初始化消费者时设置此属性。因此,在您的情况下,您需要一个group.id用于 AccountManagement,另一个用于 ActivityReporting。

于 2019-06-11T11:11:20.807 回答