apache-kafka - 用于事件发布的 Kafka 与 JMS
问题描述
在我们的场景中,我们有一组微服务,它们通过发送事件消息与其他服务进行交互。我们预计高峰期每天有数百万条消息。每条消息都针对一种或多种侦听器类型。我们的要求如下:
- 零丢失消息。
- 能够动态注册特定类型的多个侦听器以增加吞吐量。
- 发送消息时,不能保证侦听器处于活动状态。
我们考虑 2 个选项:
- 将每条消息发送到JMS主队列,然后该队列的侦听器将根据消息内容将消息路由到特定队列,然后目标服务将侦听这些特定队列。
- 按消息类型向Kafka主题发送消息,然后目标服务将订阅相关主题并使用这些消息。
为此目的使用JMS或Kafka有哪些优缺点?
解决方案
您的第一个要求是“零丢失消息”。但是,如果您想要发布-订阅语义(即 JMS 中的主题),但不能保证在分派消息时侦听器处于活动状态,那么 JMS 就无法启动,因为这些消息将被简单地丢弃(即丢失)。
推荐阅读
- java - Spring Boot 2 和 Security With JWT 无法提供 Angular 构建的静态内容
- javascript - 连接似乎在 JavaScript 中不起作用
- excel - 以编程方式将单元格的值设置为当前日期
- python - 检查电子邮件的唯一性。注册django
- python-3.x - 用零件填充列表,直到零件体积总和达到容量,然后创建新列表并填充
- c++ - 对于默认变量类型来说,数字数组是否是一种创建过长数字的有效方法?
- android - 在颤动中刷新令牌
- opencv - pytesseract image_to_string 函数的不相关输出
- python - 如果不在视口中,则会延迟加载的 Web 抓取图像
- python - Django 可以在单个页面上显示来自多个表(模型/类)的数据吗?