Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 如何使用多个核心来处理来自SQS的消息_Parallel Processing_Apache Camel_Amazon Sqs - Fatal编程技术网

Parallel processing 如何使用多个核心来处理来自SQS的消息

Parallel processing 如何使用多个核心来处理来自SQS的消息,parallel-processing,apache-camel,amazon-sqs,Parallel Processing,Apache Camel,Amazon Sqs,我使用Camel从AmazonSQS队列中读取消息,进行一些CPU密集型处理,然后将它们放在另一个SQS队列中。Camel是通过maven插件调用的,使用的是mvn Camel:run 当在具有多个核心的服务器上运行时,Camel似乎只使用单个核心来处理消息(通过监视所有核心的CPU利用率可以观察到)如何利用所有可用的内核? 我尝试过的事情: 运行JVM的多个实例(例如,通过并行运行多个mvm camel:run作业)。这是可行的,但似乎并不理想 在使用者上设置maxMessagesPerPo

我使用Camel从AmazonSQS队列中读取消息,进行一些CPU密集型处理,然后将它们放在另一个SQS队列中。Camel是通过maven插件调用的,使用的是
mvn Camel:run

当在具有多个核心的服务器上运行时,Camel似乎只使用单个核心来处理消息(通过监视所有核心的CPU利用率可以观察到)如何利用所有可用的内核?

我尝试过的事情:

  • 运行JVM的多个实例(例如,通过并行运行多个
    mvm camel:run
    作业)。这是可行的,但似乎并不理想
  • 在使用者上设置
    maxMessagesPerPoll=10
    。似乎没有什么不同
有关路线:

     <route id="marctomods"  errorHandlerRef="eh">
        <from uri="aws-sqs://{{sqs.environment}}-normalize-marcxml?accessKey=${access.key}&amp;secretKey=${secret.key}&amp;amazonSQSClient=#sqsClient&amp;maxMessagesPerPoll=10" />
        <process ref="modsProcessor"/>
        <to uri="aws-sqs://{{sqs.environment}}-enrich?accessKey=${access.key}&amp;secretKey=${secret.key}&amp;amazonSQSClient=#sqsClient" />
     </route>

通过一条路线,通常只能收到一封邮件。解释并行处理选项

例如,您可以将来自sqs的消息读取到seda队列,然后让多个并行使用者从seda队列读取消息,例如

<route>
    <from uri="aws-sqs://{{sqs.environment}}-normalize-marcxml />
    <to uri="seda:myQueue">
</route>

<route>
    <from uri="seda:myQueue?concurrentConsumers=10" />
    <process ref="modsProcessor"/>
    <to uri="aws-sqs://{{sqs.environment}}-enrich>
</route>

虽然我还必须在SQS使用者上添加maxMessagesPerPoll=10以获得最佳结果,但这仍然有效。