在我们的场景中,我们有一组通过发送事件消息与其他服务交互的微服务。我们预计在高峰期每天有数百万条信息。每个消息都指向一个或多个侦听器类型。我们的要求如下:
零信息丢失。
动态注册特定类型的多个侦听器以提高吞吐量的能力。
发送消息时,侦听器不能保证是活动的。
我们考虑两种选择:
将每条消息发送到jms主队列,然后该队列的侦听器将根据消息内容将消息路由到特定队列,然后目标服务将侦听这些特定队列。
按消息类型向kafka主题发送消息,然后目标服务将订阅相关主题并使用这些消息。
使用jms或kafka的利弊是什么?
2条答案
按热度按时间cig3rfwq1#
我建议使用kafka,因为它有容错机制,即使某些消息丢失或没有被任何侦听器捕获,您也可以轻松地从kafka集群中检索它。
除此之外,您可以轻松地在组中添加新的侦听器/侦听器,kafka和zookeeper将很好地管理它。
总之, Kafka 是一个分布式发布-订阅消息传递系统,旨在实现快速、可扩展和持久性。像许多发布-订阅消息系统一样, Kafka在主题中输入信息。生产者向主题写入数据,消费者从主题读取数据。
非常容易集成。
8hhllhi22#
你的第一个要求是“零信息丢失”。但是,如果您想要发布-订阅语义(即jms中的主题),但是当消息被调度时,监听器不能保证是活动的,那么jms是非启动程序,因为这些消息将被丢弃(即丢失)。