我最近问在 vertx 中通信我的微服务的最佳方式是什么,我采用的方式是使用具有提供 vertx 的相同库的 Web 客户端(非常简单),但是我一直在阅读该内容使用apache kafka更好,但我不知道如何使用它,我阅读了kafka的官方文档,但我只能创建一个生产者和一个消费者,我真的不知道如何处理它们,我该如何从微服务通过kafka向另一个微服务发送方法?请原谅我对这个问题的无知
最佳答案
您的微服务可以做到这一点:
订阅 Kafka 主题并使用来自该主题的消息并处理该消息(为此,您需要在微服务中创建一个具有
group.id
的使用者)在一个或多个主题中发送消息以联系其他微服务(为此,您需要在微服务中创建一个或多个生产者)
我建议您阅读一些有关使用 Kafka 或旧式 JMS 兼容系统(例如 ActiveMQ 或 RabbitMQ)的微服务架构的文章。
以下是场景示例:
服务 A:用于订购汉堡菜单的安静端点:
POST/v1/order
{"type": "cheeseburger", "quantity": 1, "ketchup": true, "notify": ["cooker"]}
此服务使用 Kafka 生产者在名为
TOPIC_ORDERS
的主题中发送 JSON服务B:使用
TOPIC_ORDER
的消息并向cooker发送短信,并将订单插入数据库,并使用另一个主题CREATED_ORDERS<中的id生成创建的订单
服务 C: cooking 器在 cooking 菜单时使用的另一个 Restfull 端点:
补丁/v1/order/{id}
{"ready": true, "notify": ["customer"]}
这会在
TOPIC_ORDER
中生成消息,以便调用服务 B 更新数据库中的订单并通知客户。服务 D:使用
CREATED_ORDERS
主题的消息在某些其他应用程序使用的搜索引擎中建立索引(例如进行统计)
关于java - 如何在vertx中使用apache kafka,无论是在服务器端还是客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683432/