Asynchronous 是否存在手动将消息队列通信与请求/响应同步的模式?
让我们想象一下,我有一个RESTAPI,其端点Asynchronous 是否存在手动将消息队列通信与请求/响应同步的模式?,asynchronous,design-patterns,synchronization,Asynchronous,Design Patterns,Synchronization,让我们想象一下,我有一个RESTAPI,其端点/API/status。访问此端点时,API向消息队列发送一条消息,请求其他服务的状态 然后作为响应,服务将一条消息及其状态发送到RESTAPI侦听的队列。因此,它是一条请求状态的消息和一条回复消息 我的问题是:是否有一种设计模式可以将这种方法的异步特性转换为API中的同步特性?换句话说:GetStatus(…)下面的伪代码中的方法可以实现通过多个消息队列甚至发布/子系统的通信来同步状态的获取 var statusRequestMsg=“获取_状态”
/API/status
。访问此端点时,API向消息队列发送一条消息,请求其他服务的状态
然后作为响应,服务将一条消息及其状态发送到RESTAPI侦听的队列。因此,它是一条请求状态的消息和一条回复消息
我的问题是:是否有一种设计模式可以将这种方法的异步特性转换为API中的同步特性?换句话说:GetStatus(…)
下面的伪代码中的方法可以实现通过多个消息队列甚至发布/子系统的通信来同步状态的获取
var statusRequestMsg=“获取_状态”;
var statusResponseMsg=GetStatus(statusRequestMsg);
我知道如何在代码中解决这个问题,但我很好奇是否有一种设计模式引入了一种通用的方法
我在谷歌上搜索了很多,但我发现的唯一想法是在本文中对实现这一点的方法进行了非常技术性的解释:
请注意我知道这不是完美的API设计,有更好的方法来实现这个示例。我创建了上面的示例来帮助我说明我的问题。此外,我还了解到一些AMQP实施。(如RabbitMQ)提供了一种将MQ通信同步到请求/响应样式的方法
提前谢谢。您考虑过这样的事情吗:
那行吗?是的,建议不错。事实上,我就是这样实现的,但没有Redis atm。我的问题是,这种在服务之间同步请求响应(如消息)的方法是否真的有一个模式名。我不知道这种方法的同步端有什么名称。但是,异步位称为异步请求-响应模式:或者,您是否考虑过远程过程调用而不是异步消息?