我是个新手,正在尝试理解最大并发是如何工作的?我理解这是为了确定可以同时接收多少个请求。但我有一个问题,如果我对应用程序有大量的传入请求,如果我设置了最大并发,后续请求是否会在队列中,或者它会出错,或者数据将会丢失?
例如,假设我的应用程序收到大约10,000个请求,并且我将最大并发数设置为1000。那么,其他9000将在队列中,还是有数据丢失的机会?
另外,可以为流设置的理想最大并发数是多少?
提前谢谢。
发布于 2021-05-21 04:32:47
我不确定你指的是哪个队列。在Mule 4中,请求不会排队。如果流设置为maxConcurrency,则任何超过该数量的并发请求都将失败并返回错误。如果这导致数据丢失,可能取决于您的应用程序正在做什么。maxConcurrency只是限制了并发性,而无需考虑实现方式或线程数量。
如果您的应用程序正在从队列(即JMS或VM队列)进行读取,则预计它不能读取超过maxConcurrency的同步消息,因此其他消息应该保留在队列中,并且不会触发错误。
请注意,maxConcurrency并不能保证应用程序实际上可以处理同样多的并发请求。如果将其设置为1000,则必须确保应用程序有足够的资源来处理如此多的并发请求。知道如何调整大小的唯一方法是在类似于实际预期使用的情况下执行负载测试,并验证由于资源不足而开始出现错误的数量。
一种特殊情况是您只想要一个特定的数字。例如,从maxConcurrency =1的队列中读取的流一次只处理一条消息。
https://stackoverflow.com/questions/67627391
复制相似问题