我有两个微服务A和B(express和typescript)。当B创建对象b并引用来自微服务A的对象a时,它需要首先验证该对象是否存在。
我认为在实现本地存储时,当A创建或删除对象时,会在队列(Kafka)中发布消息,订阅者会该高速缓存。还允许微服务之间的异步通信,例如,如果一个微服务想要在另一个微服务中创建一个需要时间创建的资源。但是,我希望保留API Rest以公开或在需要同步通信时公开。
我想有三种方法:
1.创建两个服务,一个是REST API,一个是队列的消费者(例如Kafka),它们都在同一个域上工作。
1.运行API,并在后台或异步队列消费者。
1.微服务只是消费消息,创建一个接收请求并转换成消息的REST API,等待响应消息并返回响应
1条答案
按热度按时间628mspwn1#
没有什么可以阻止express应用也运行Kafka消费者。我在我自己的项目中做了这件事(尽管NestJS已经包含了我推荐的Kafka支持)
但是,您可能需要考虑CQRS和/或发件箱架构模式,具体取决于后端数据库/存储
对于服务之间的通信,您可以使用gRPC,REST,Kafka或任何其他消息队列。