生成和使用同一主题的消息是不好的做法吗?

时间:2017-08-03 14:09:23

标签: apache-kafka activemq messaging microservices tibco-ems

假设您有一个微服务架构,其中多个服务生成并消耗单元状态。

有多种方法可以设计这个,你会推荐哪一种?

这些是我想到的一些选项:

  1. 创建一个通用主题unit-status,并使服务使用并生成有关此主题的消息。这导致您使用自己的消息并且必须过滤它们。我认为这是一个肮脏的解决方案,但新的消费者很容易获得所有单位状态事件。
  2. 为每种状态创建一个特定主题,例如unit-status-createdunit-status-packagedunit-status-loadedunit-status-deleted等。每项服务仅在其上生成主题,但可以从主题列表中消费,排除它自己的主题。例如,加载服务将从列表中消耗(unit-status-createdunit-status-deletedunit-status-packaged)。这允许服务仅显示对特定事件的兴趣,但是当添加新状态主题时,它需要在可能的所有服务中进行代码或配置更改。
  3. 为每个状态提供它自己的分区,并从除了你生成的分区之外的所有分区中使用。这种设计使事情变得更复杂(簿记哪个分区包含特定状态),在添加分区时不自动平衡,在实时添加分区会使事情风险更大,因此没有我的偏好。

1 个答案:

答案 0 :(得分:0)

根据我的理解,我会建议第1点

添加新的微服务将更容易添加新的微服务,并且仍然可以在没有太多变化的情况下工作。

业务逻辑应该是微服务的一部分,而不是消息队列