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

标签 java apache-kafka microservices vert.x

我最近问在 vertx 中通信我的微服务的最佳方式是什么,我采用的方式是使用具有提供 vertx 的相同库的 Web 客户端(非常简单),但是我一直在阅读该内容使用apache kafka更好,但我不知道如何使用它,我阅读了kafka的官方文档,但我只能创建一个生产者和一个消费者,我真的不知道如何处理它们,我该如何从微服务通过kafka向另一个微服务发送方法?请原谅我对这个问题的无知

最佳答案

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

  • 订阅 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的消息并向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/

相关文章:

使用 Windows keystore 进行客户端验证的 Java HTTPS

java - Kafka 生产者无法发送消息,出现 NOT_LEADER_FOR_PARTITION 异常

spring - 异步微服务通信如何从UI的 Angular 表现得更好?

spring-security - session 范围内的 Spring session + Redis + Infinispan 缓存失败

java - jhipster应用程序的JWT认证

java - 使用 JDBC 后无法从 h2 控制台登录 h2 数据库

javascript - 使用 Java 从网络下载生成的图像

java - 如何正确检查字符串是否仅包含数字或字母?安卓

java - 嵌入式 Kafka 用于无 Spring 测试

linux - 无法使用 dcos 节点 ssh --master-proxy --leader sshing 进入 dcos 节点