【问题标题】:How use apache kafka in vertx, both on the server side, as well as the client?如何在服务器端和客户端在 vertx 中使用 apache kafka?
【发布时间】:2018-04-06 23:53:49
【问题描述】:

我最近询问在 vertx 中通信我的微服务的最佳方式是什么,我使用的方式是使用具有提供 vertx 的相同库的 Web 客户端(非常简单),但是我一直在阅读用apache kafka比较好,但是不知道怎么用,看了kafka的官方文档,但是只能创建producer和consumer,实在不知道怎么处理他们,怎么从一个微服务通过kafka向另一个微服务发送一个方法?请原谅我对这个主题的无知

【问题讨论】:

    标签: java apache-kafka microservices vert.x


    【解决方案1】:

    您的微服务可以做到这一点:

    • 订阅 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的消息并发送短信到炊具并将订单插入数据库中,并在另一个主题CREATED_ORDERS中生成带有ID的已创建订单

    • 服务 C:烹调菜单时炊具使用的另一个 restfull 端点:

      PATCH /v1/order/{id}

      {"ready": true, "notify": ["customer"]}

      这个产生TOPIC_ORDER中的消息以便调用服务B更新数据库中的订单并通知客户。

    • 服务 D:使用 CREATED_ORDERS 主题的消息,以在其他应用程序使用的搜索引擎中进行索引(例如进行统计)

    【讨论】:

    • 对不起,你能给我一个非常简单的例子吗?通过kafka使用另一个微服务的微服务
    • 我已经更新了我的答案,但我认为您需要对面向消息架构和微服务进行一些研究,以了解其目的,而不是专注于 Kafka 或 Vert.x 等技术
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2011-02-06
    • 2012-05-26
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多