Service Redis在服务之间进行数据流交换

Service Redis在服务之间进行数据流交换,service,redis,stream,microservices,Service,Redis,Stream,Microservices,我正在用Redis Streams开发微服务 基本上,服务A使用Redis Streams(XADD)向服务B发送作业。 一旦服务B通过Redis Streams接收到作业,此服务执行对外部API的HTTP请求,解析结果并对作业进行XACK。在此期间,服务A正在等待来自服务B的数据 将HTTP请求的解析结果从服务B发送到正在等待数据的服务A的正确方式是什么 我想可能的答案是: 在服务A上使用另一个Redis Streams(XREAD或XREADGROUP),该服务正在等待输入从B发送的数据,

我正在用Redis Streams开发微服务

基本上,服务A使用Redis Streams(XADD)向服务B发送作业。 一旦服务B通过Redis Streams接收到作业,此服务执行对外部API的HTTP请求,解析结果并对作业进行XACK。在此期间,服务A正在等待来自服务B的数据

将HTTP请求的解析结果从服务B发送到正在等待数据的服务A的正确方式是什么

我想可能的答案是:

  • 在服务A上使用另一个Redis Streams(XREAD或XREADGROUP),该服务正在等待输入从B发送的数据,但我需要提供一个流名称,以便将数据发送到从A发送到B的消息中
  • 使用另一种Redis数据类型,如列表,它可以使用阻塞请求(BLPOP、BRPOP…),但是如何知道提交到此列表中的数据是否是正确的消息?也许我需要在某个地方使用一个唯一的ID
  • 使用pub/sub,但我并不喜欢这个解决方案,因为它没有历史记录或持久数据

我希望我说得够清楚。

服务A可以并行地向服务B发送多个请求,还是发送一个请求并立即等待响应?服务A是同步的,服务B是异步的。因此,A正在发送请求并直接等待响应。但是服务B可以一次处理多个请求。我认为没有“正确的方法”,但我会使用另一个流