我如何使用RabbitMq进行异步RPC调用
我试图做一个RestApi(asp.net核心),通过RabbitMq调用后端(C#)。 为了处理很多请求,我需要异步调用后端。
对我来说,来自rabbitmq的示例代码似乎不是线程安全的,因为它将邮件出队,直到返回具有正确关联标识的邮件。 所有其他人将被忽略。 (链接:https://www.rabbitmq.com/tutorials/tutorial-six-dotnet.html)
while(true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
if(ea.BasicProperties.CorrelationId == corrId)
{
return Encoding.UTF8.GetString(ea.Body);
}
}
我在考虑以下可能性:
可能性1:
我可以使用SimpleRpcClient并为每个请求创建一个自己的实例。 这将导致为每个请求创建一个新的队列来回复。
可能性2:
创建一个自己的RPC客户端,创建一个回复队列(可能是每个请求类型),并根据相关ID返回正确的请求。
使多个调用异步的最佳做法是什么? 第二种可能性是否已经实现?还是我需要自己实现?