我们如何异步处理直接虚拟机?
我有以下骆驼路线定义:
<route id="routeA">
<from uri="activemq:queue:queueA" />
<to uri="direct-vm:someProcessing" />
<to uri="direct-vm:processAsync" />
</route>
<route id="routeB">
<from uri="direct-vm:processAsync">
<threads executorServiceRef="someRef">
<inOnly uri="direct-vm:timeTakingRoute" />
<threads>
<route>
当队列使用者使用消息并发送到routeB并使用线程DSL调用directvm:timeTakingRoute
时,调用线程(即queueA
)仍然等待,直到使用线程DSL创建的线程完成。
我们如何异步处理这个问题(调用者线程不应该等到使用线程DSL创建的线程完成)?
您可以选择seda
或vm
组件。使用seda时,请注意队列仅在it's CamelContext中可见。如果您想要CamelContext
之间的相互通信,请使用vm
组件,它是seda
组件的扩展。阅读更多:seda vm
直接组件设计为同步http://camel.apache.org/direct-vm.html
请尝试使用seda:
<route id="routeA">
<from uri="activemq:queue:queueA" />
<to uri="direct-vm:someProcessing" />
<inOnly uri="seda:processAsync" />
</route>
<route id="routeB">
<from uri="seda:processAsync" />
<to uri="direct-vm:timeTakingRoute" />
</route>
我尝试了很多方法来使用camel gzip请求(在json中),我们使用camel调用rest web服务。 请求将在正文中,因为我们在POST请求中发送它 问候哈里
我在查找正确的 activemq 配置集以确保 Apache 骆驼路由中的消息吞吐量一致时遇到问题。当前配置使用以下技术: > 骆驼 (2.15.2) 活动磁共振 (5.12.1) 雄猫 (7.0.56) 以下是Camel中用于ActiveMQ的bean配置集: -- 以下是在activemq中找到的代理特定配置。xml文件: 我正在运行下面的骆驼路由。队列A接收大量消息(1000/s),因此它很
我有一个场景,我想“拉”RabbitMQ队列/主题的消息,并一次处理一个。特别是当消费者启动时,队列中已经有消息。我尝试了以下方法,但没有成功(这意味着,这些选项中的每一个都会读取队列,直到队列为空,或者直到另一个线程关闭上下文)。 1.第一次处理后立即停止路由 与1类似,但使用闩锁而不是while loop和sleep。 使用轮询消费者 使用ConsumerTemplate()-类似于上面的代码
我正在尝试Apache Camel技术,但遇到了麻烦。 我使用Jpa组件的轮询消费者as from(),并将实体上的@consumed注释设置为在流程结束时将其状态更改为“已成功处理”。它很好用。 但如果出现任何错误,我不想在数据库中设置“已成功处理”标志,而是设置“错误发生”之类的标志。 为了解决这个问题,我创建了一个带有处理器的“死信队列”,该处理器试图更改我正在进行的实体的状态,以便稍后保存
我想建模一个接受包含xml消息的tcp请求的Apache Camel路由。 每个消息可能导致大量的响应,这些响应应该在传入的套接字上发回。我在同步模式下使用了camel-netty组件,它适用于单个消息。但是有可能在套接字上发回多条消息吗?基本上是回归前的分裂。 在我的例子中,异常是IllegalArgument,说明endpoint不支持ArrayList作为有效负载。 干杯。
我正在将CSV文件输入集成到一个更大的系统中,我想对其进行设置,以便将CSV中未正确解析的各行(由)发送到医院队列,并将所有其他工作行转换为一个对象并聚合到一个列表中。但是,我很难将