我有以下用例:
假设您有两个微服务—accountmanagement和activityreporting—处理事件u。
当用户注册时,包含用户信息的事件u将发布到代理中,供两个微服务处理。
出于性能和可伸缩性的考虑,accountmanagement和activityreporting microservice分别跨两个示例进行复制。
每个微服务示例都有一个使用者在侦听代理主题。选择的主题是,accountmanagement和activityreporting都可以同时处理u。
但是,我只希望accountmanagement的一个示例处理事件u,而activityreporting的一个示例处理事件u。
请分享您的经验,实现消费一次,每个应用程序组,经纪系统。
因为这样可以有效地解决这个问题。
2条答案
按热度按时间lvjbypge1#
如果您的所有消费者侦听器(即使来自不同示例)都具有相同的
group.id
属性,则只有其中一个将接收消息。初始化使用者时需要设置此属性。所以你需要一个group.id
用于accountmanagement,另一个用于activityreporting。tpgth1q72#
我推荐cadence workflow,这是一种更强大的微服务编排解决方案。
它比在用例中使用队列提供了很多优势。
构建了无限过期间隔的指数重试
故障处理。例如,它允许执行一个任务,如果两个更新在配置的时间间隔内都不能成功,则通知另一个服务。
支持长时间运行的心跳操作
能够实现复杂的任务依赖关系。例如,在发生不可恢复的故障时实现调用链或补偿逻辑(saga)
提供对更新当前状态的完全可见性。例如,在使用队列时,您知道队列中是否有一些消息,并且需要额外的数据库来跟踪总体进度。每一个事件都有节奏地记录下来。
取消飞行中更新的能力。
请参见cadence编程模型的演示。