Apache camel 已完成http4组件范围内的交换

Apache camel 已完成http4组件范围内的交换,apache-camel,Apache Camel,我有一个简单的驼峰路由,用于消费来自ActiveMQ的消息,并将其处理和转发到Rest webservices: from("activemq:MyQueue").process("MyProcessor").to("http4:uri"); 我从activemq组件在connectionfactory中配置concurrentConsumers=100 在文件中: if asyncConsumer is disabled(defau

我有一个简单的驼峰路由,用于消费来自ActiveMQ的消息,并将其处理和转发到Rest webservices:

from("activemq:MyQueue").process("MyProcessor").to("http4:uri");
我从activemq组件在connectionfactory中配置concurrentConsumers=100

在文件中:

if asyncConsumer is disabled(default) then the Exchange is fully processed before the JmsConsumer will pickup the next message from the JMS queue
问题: 在我的路线中,每封邮件的交换何时被完全处理?http被调用方收到http响应后?如果是这种情况,我假设,我的路线配置意味着:

  • 在开始时,每个消费者消费一条消息并将其转发到http
  • 这100个使用者中的每一个都在等待,并且只有在当前http调用从当前消息获得http响应时才会再次使用
  • 另一个问题: 我发现http4组件选项connectionsPerRoute的默认值为20。因为我有100个消费者,我应该设置connectionsPerRoute=100吗

    谢谢,,
    Hadi

    每个jms线程都同时运行,而彼此不知道。在您的示例中,同时处理100个线程而不会被阻止。您不需要计算http组件的线程数,因为这是通过jms线程从头到尾完成的。

    如果禁用asyncConsumer(默认),我可以依赖此语句然后,在JmsConsumer从JMS队列中拾取下一条消息之前,交换被完全处理?当前messageExchange完成后,每个使用者是否真的使用队列中的下一条消息?这是我想要的功能。我确实需要配置connectionsPerRoute,因为默认值是20。我有100个消费者,每个消费者都应该将消息并发路由到一个http uri。所以我需要connectionsPerRoute=100。如果我和20个呆在一起,我可以看到在日志中等待。