如何在服务器端以及客户端的vertx中使用apache kafka?

时间:2018-04-06 00:21:19

标签: java apache-kafka microservices vert.x

我最近问过什么是在vertx中传达我的微服务的最佳方式,我是以一种带有相同库提供vertx的web客户端的方式做到的(这很简单),但我一直在阅读使用apache kafka比较好,但我不知道如何使用它,我看了kafka的官方文档,但我只能创建一个制作人和一个消费者,我真的不知道该如何处理它们,我怎么能从微服务通过kafka向另一个miscroservice发送一个方法?请原谅我对主题的无知

1 个答案:

答案 0 :(得分:1)

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

  • 订阅Kafka主题并使用此主题中的消息并处理这些消息(为此,您需要在微服务中创建一个group.id的消费者)

  • 发送一个或多个主题中的消息以联系其他微服务(为此,您需要在微服务中创建一个或多个生产者)

我建议您阅读一些关于使用Kafka或旧时尚JMS兼容系统(例如ActiveMQ或RabbitMQ)的微服务架构的文章。

您可以从这个开头:https://medium.com/@ulymarins/an-introduction-to-apache-kafka-and-microservices-communication-bf0a0966d63

以下是一个场景示例:

  • 服务A:用于订购汉堡菜单的restfull端点:

    POST /v1/order

    {"type": "cheeseburger", "quantity": 1, "ketchup": true, "notify": ["cooker"]}

    此服务使用Kafka生产者在名为TOPIC_ORDERS

  • 的主题中发送JSON
  • 服务B:使用TOPIC_ORDER的消息并向炊具发送短信并将订单插入数据库并使用其他主题CREATED_ORDERS中的ids生成创建的订单

  • 服务C:烹饪菜单时烹饪器使用的另一个restfull端点:

    PATCH /v1/order/{id}

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

    此消息在TOPIC_ORDER中生成消息,以便呼叫服务B更新数据库中的订单并通知客户。

  • 服务D:使用CREATED_ORDERS主题的消息来索引某些其他应用程序使用的搜索引擎(例如,制作统计信息)