我如何使用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返回正确的请求。


使多个调用异步的最佳做法是什么? 第二种可能性是否已经实现?还是我需要自己实现?


  • 设计一个作业队列,推送作业从发生器排队并忘记,以便作业生成器保持响应
  • 让多个工作人员等于可用CPU线程数(以优化性能)来处理作业
  • 每个工作人员从主队列中取出作业,并将其结果放在新队列中。
  • 保持功能
  • 不要处理*太旧的**工作。
  • 终止长时间运行的作业。
  • 首先选择高优先级的作业。
  • 如果允许设计远程作业运行器节点
  • 链接地址: http://www.djcxy.com/p/61229.html

    上一篇: How do I do async RPC calls with RabbitMq

    下一篇: RabbitMQ RPC close response queue on final message