mulesoft - Mule 4 中的 maxConcurrency
问题描述
我是 mule 新手并试图了解最大并发的工作原理?我知道这是为了确定可以同时接收多少个请求。但是我有一个问题,如果我有大量的应用程序传入请求,如果我设置了最大并发数,后续请求是否会在队列中,或者它会出错或数据会丢失?
例如,假设我的应用程序收到大约 10,000 个请求,并且我将最大并发设置为 1000。那么其他 9000 将在队列中,或者有可能丢失数据?
另外,可以为流设置的理想最大并发是多少?
提前致谢。
解决方案
我不确定你指的是哪个队列。在 Mule 4 中,请求没有排队。如果流设置了 maxConcurrency,任何超过该数量的并发请求都将失败并出现错误。如果这导致数据丢失可能取决于您的应用程序在做什么。maxConcurrency 只是限制并发性,您无需考虑实现或线程数。
如果您的应用程序正在从队列(即 JMS 或 VM 队列)中读取,预计它不能读取超过 maxConcurrency 并发消息,因此其他消息应保留在队列中并且不会触发错误。
请注意,maxConcurrency 并不能保证应用程序实际上可以处理尽可能多的并发请求。如果将其设置为 1000,则必须确保您的应用程序将有足够的资源来处理那么多并发请求。知道如何调整大小的唯一方法是在与实际预期使用情况相似的条件下执行负载测试,并验证由于资源不足而开始出现错误的次数。
一种特殊情况是您只需要一个特定的数字。例如,从 maxConcurrency = 1 的队列中读取的流一次只处理一条消息。
推荐阅读
- php - Undefined_constant:PHP 7 升级后出错
- shared-libraries - Bazel - 如何处理外部 .so 库的传递依赖关系?
- r - R:为数据赋值
- python - Python 的 win10toast 模块未按预期工作
- pandas - Python:转换包含列表和字典的 Pandas 数据框
- ios - IOS 应用程序中未收到 Firebase 推送通知徽章计数
- java - 计时器无法按预期工作,因为它会立即结束程序
- multithreading - Goroutine-停止运行进程
- cuda - 当 cudaDeviceSynchronize() 出现错误 30?
- html - 导航栏不会一直走到边缘