我最近问在 vertx 中传达我的微服务的最佳方式是什么,我以一种使用 Web 客户端的方式做到了,该客户端具有提供 vertx 的相同库(非常简单),但是我一直在阅读使用 apache kafka 更好,但我不知道如何使用它, 我阅读了 kafka 的官方文档,但我只能创建一个生产者和一个消费者,我真的不知道如何处理它们,我如何从一个微服务通过 kafka 将方法发送到另一个 miscroservice?请原谅我对这个主题的无知
您的微服务可以做到这一点:
-
订阅 Kafka 主题并使用此主题中的消息并处理该消息(为此,您需要在微服务中创建具有
group.id
的使用者)
在 一个或多个主题中发送消息以联系其他微服务(为此,您需要在微服务中创建一个或多个生成者)
我建议您阅读一些有关使用 Kafka 或旧式 JMS 兼容系统(例如 ActiveMQ 或 RabbitMQ)的微服务架构的文章。
你可以从这个开始:https://medium.com/@ulymarins/an-introduction-to-apache-kafka-and-microservices-communication-bf0a0966d63
下面是一个场景示例:
-
服务 A:订购汉堡菜单的休息端点:
POST /v1/order
{"type": "cheeseburger", "quantity": 1, "ketchup": true, "notify": ["cooker"]}
此服务使用 Kafka 创建器在名为
TOPIC_ORDERS
的主题中发送 JSON -
业务B:消费
TOPIC_ORDER
的消息,向炊具发送短信,将订单插入数据库,并在另一个主题中生成带有ID的创建订单CREATED_ORDERS
-
服务 C:烹饪菜单时炊具使用的另一个休息端点:
PATCH /v1/order/{id}
{"ready": true, "notify": ["customer"]}
这会在
TOPIC_ORDER
中生成消息,以便调用服务 B 以更新数据库中的订单并通知客户。 -
服务 D:使用
CREATED_ORDERS
主题的消息在其他一些应用程序使用的搜索引擎中索引(例如进行统计)