我试图通过RabbitMq做一个调用后端(C#)的RestApi(asp.net核心)。要处理许多请求,我需要异步调用后端。
对我来说,来自rabbitmq的示例代码似乎不是线程安全的,因为它会使消息出列,直到返回具有正确相关id的消息。所有其他人都将被忽略。 (链接: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);
}
}
我正在思考以下各种可能性:
我可以使用SimpleRpcClient并为每个请求创建一个自己的实例。这将导致为每个请求创建一个新的回复队列。
创建一个自己的RPC客户端,创建一个回复队列(可能是每个请求类型),并根据相关ID返回对正确请求的正确响应。
使多个调用异步的最佳做法是什么?是否已经实现了第二种可能性,还是我需要自己实现?
答案 0 :(得分:1)