最近我问过在vertx中交流微服务的最佳方式是什么,我的方式是使用一个web客户机,它与提供vertx的库相同(非常简单),但是我一直在阅读使用ApacheKafka更好,但是我不知道如何使用它,我阅读了kafka的官方文档,但是我只能创建一个生产者和消费者,我真的不知道该怎么处理他们,我怎么能从一个微服务通过Kafka把一个方法发送到另一个错误服务呢?请原谅我对这个问题一无所知
最近我问过在vertx中交流微服务的最佳方式是什么,我的方式是使用一个web客户机,它与提供vertx的库相同(非常简单),但是我一直在阅读使用ApacheKafka更好,但是我不知道如何使用它,我阅读了kafka的官方文档,但是我只能创建一个生产者和消费者,我真的不知道该怎么处理他们,我怎么能从一个微服务通过Kafka把一个方法发送到另一个错误服务呢?请原谅我对这个问题一无所知
1条答案
按热度按时间z31licg01#
您的微服务可以做到:
订阅一个kafka主题并使用来自该主题的消息并处理该消息(为此,您需要使用
group.id
在微服务中)在一个或多个主题中发送消息以联系其他微服务(为此,您需要在微服务中创建一个或多个生产者)
我建议您阅读一些关于使用kafka或老式jms兼容系统(例如activemq或rabbitmq)的微服务体系结构的文章。
你可以从这个开始:https://medium.com/@ulymarins/an-apache-kafka-and-microservices-communication-bf0a0966d63简介
下面是一个场景示例:
服务a:要订购汉堡菜单的restfull端点:
POST /v1/order
{"type": "cheeseburger", "quantity": 1, "ketchup": true, "notify": ["cooker"]}
这个服务使用kafka生产者在一个名为TOPIC_ORDERS
服务b:使用TOPIC_ORDER
然后发送短信到炊具,将订单插入数据库,并在另一个主题中生成带有ID的已创建订单CREATED_ORDERS
服务c:烹饪菜单时炊具使用的另一个restfull端点:PATCH /v1/order/{id}
{"ready": true, "notify": ["customer"]}
这一个产生了TOPIC_ORDER
以便呼叫服务b更新数据库中的订单并通知客户。服务d:使用
CREATED_ORDERS
在其他应用程序使用的搜索引擎中索引的主题(例如,生成统计信息)