Kafka vs JMS用于事件发布

时间:2018-12-31 10:43:10

标签: apache-kafka jms microservices event-driven

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

  1. 零邮件丢失。
  2. 能够动态注册特定特定的多个侦听器 输入以增加吞吐量。
  3. 不能保证在出现消息时侦听器仍处于活动状态 派遣。

我们考虑2种选择:

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

为此目的使用 JMS Kafka 的利弊是什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我建议使用Kafka,因为它具有容错机制,即使某些消息丢失或未被任何侦听器捕获,您也可以轻松地从Kafka集群中检索它。

除此之外,您可以轻松地在组中添加新的侦听器/侦听器,并且kafka和zookeeper会很好地进行管理。

总而言之,Kafka是一个分布式的发布-订阅消息传递系统,旨在实现快速,可扩展和持久的功能。像许多发布订阅消息传递系统一样,Kafka维护主题中消息的提要。生产者将数据写入主题,而消费者则从主题中读取数据。

非常容易集成。