如何在 vertx 中使用 apache kafka,无论是在服务器端还是在客户端?



我最近问在 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主题的消息在其他一些应用程序使用的搜索引擎中索引(例如进行统计)

最新更新