我正在尝试执行通过RabbitMQ调用后端(C#)的RESTAPI(ASP.NET CORE)。要处理许多请求,我需要异步调用后端。
对我来说,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);
}
}
我正在考虑以下可能性:
可能性1:
我可以使用SimpleerPcclient并为每个请求创建一个自己的实例。这将导致每个请求都会创建一个新的队列。
可能性2:
创建一个自己的RPC客户端,该客户端创建一个回复队列(可能是每个请求类型),并根据相关ID返回正确的请求。
做出多个呼叫异步的最佳实践是什么?是否已经实现了第二种可能性,或者我需要自己实施?
- 设计一个工作队列,将作业从发电机排队而忘记,以便发电机保持响应
- 有多个工人等于可用的CPU线程数量(用于优化性能)来处理作业
- 每个工人从Main排队从Main排队任职,并将其与新队列一起放置。
- 保留功能
- 不要处理*太旧**工作。
- 终止长期运行作业。
- 选择高优先级首先作业。
- 如果允许设计远程作业跑步者节点