当前位置: 首页 > 知识库问答 >
问题:

仅使用骆驼路由中的直接虚拟机请求消息传递

伍皓
2023-03-14

我们如何异步处理直接虚拟机?

我有以下骆驼路线定义:

<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创建的线程完成)?

共有2个答案

谭骏
2023-03-14

您可以选择sedavm组件。使用seda时,请注意队列仅在it's CamelContext中可见。如果您想要CamelContext之间的相互通信,请使用vm组件,它是seda组件的扩展。阅读更多:seda vm

何甫
2023-03-14

直接组件设计为同步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作为有效负载。 干杯。

  • 我对骆驼很陌生,如果这很明显,请原谅。 我们正在尝试设置一条骆驼路线(在 talend esb 中),它执行以下操作: < li >通过JMS接收消息 < li >数据库更新 < li >通过JMS使用请求/回复将消息发送到另一个系统 < li >使用回复中的信息进行另一次数据库更新 这一切都在一条路线上。我发现该路由不再接受 1 中的任何消息。当它正在等待 3 中的回复时。 我曾尝试在JMS组件