Service Fabric中的可靠并发队列

问题描述 投票:0回答:1

我有一个服务结构应用程序,其中包含一个无状态服务和多个有状态服务。无状态服务从RabbtitMQ读取(使用MassTransit),并将消息传递给相应的有状态服务以对其进行处理。传递给有状态服务的消息在ConcurrentQueue中排队,并在RunAsync中使其出队和处理。直到出现较少的消息为止,一切都很好。最近,消息的数量增加了很多倍。现在的情况是RabbitMq中的消息计数为数百万,并且有状态服务队列过载。内存使用率非常高,群集被卡住。

  1. RunEsync方法需要等待的入队过程中队列是否被锁定?入队率很高。
  2. 如果队列计数很高,我将无法找到停止从RabbitMq进行获取的方法。至少群集不会挂起或崩溃。
  3. 在输入负载很高的情况下,最佳的设计是什么?

谢谢

rabbitmq azure-service-fabric service-fabric-stateful
1个回答
0
投票

您如何划分感激的服务?如果您具有范围或命名分区,则所有消息都不应与同一个副本相同。如果正确应用了分区方案,则消息将最终位于同一有状态服务的不同分区中,并且可以横向扩展。

© www.soinside.com 2019 - 2024. All rights reserved.