首页 > 解决方案 > 用于事件发布的 Kafka 与 JMS

问题描述

在我们的场景中,我们有一组微服务,它们通过发送事件消息与其他服务进行交互。我们预计高峰期每天有数百万条消息。每条消息都针对一种或多种侦听器类型。我们的要求如下:

  1. 零丢失消息。
  2. 能够动态注册特定类型的多个侦听器以增加吞吐量。
  3. 发送消息时,不能保证侦听器处于活动状态。

我们考虑 2 个选项:

  1. 将每条消息发送到JMS主队列,然后该队列的侦听器将根据消息内容将消息路由到特定队列,然后目标服务将侦听这些特定队列。
  2. 按消息类型向Kafka主题发送消息,然后目标服务将订阅相关主题并使用这些消息。

为此目的使用JMSKafka有哪些优缺点?

标签: apache-kafkajmsmicroservicesevent-driven

解决方案


您的第一个要求是“零丢失消息”。但是,如果您想要发布-订阅语义(即 JMS 中的主题),但不能保证在分派消息时侦听器处于活动状态,那么 JMS 就无法启动,因为这些消息将被简单地丢弃(即丢失)。


推荐阅读