1

谁能帮我。我正在尝试使用骆驼发送消息。也许我的概念错了。我想向 activemq 发送一条简单的消息。我有一个 messageService,它是一个发送方法。问题是我将 pojo 作为消息发送,我希望它自动转换为 json 字符串。这就是我尝试使用骆驼的原因。

我已经定义了一个指向我的发送方法的路由,并在路由中添加了一个编组器。

问题是骆驼似乎每秒不断地发送一条 jms 消息。我想要的是当我调用 sendMethode 时,camel 将我的消息输出转换为 json。

这是我的溃败:

<from uri="bean:messageService?method=sendMessage" />
    <marshal>
    <json library="Gson"/>
    </marshal>
<inOnly uri="activemq:com.pack.checkSynchronicityUrl" />

因此,当我调用服务 messageService 时,我希望骆驼将输出转换为 json 并将其放入队列中。

非常感谢你的帮助。

4

2 回答 2

0

当您有路线时,从 bean 开始

<from uri="bean:xxx"/>

使用 bean 组件,然后 Camel 会不断调用 bean 方法,死循环。

所以你需要做其他事情,例如从你的 bean 中的 java 代码,你可以使用生产者模板 api、pojo 生产或使用代理等向 Camel 路由发送消息。请参阅下面的链接

于 2013-04-25T07:51:24.163 回答
0

@Claus 已经解释了您的路线问题。

正如您在这些链接中看到的那样,您需要的行为可以通过不同的方式实现。这是一个可以满足您的目的的示例。

将路线定义为:

from("direct:start").
   marshal(...).
      to("activemq:com.mele...);

或类似的spring dsl。以下代码可以是 messageService.sendMessage() 方法的一部分:

ProducerTemplate template = camelcontext.createProducerTemplate();
template.sendBody("direct:start", myPojo);
于 2013-04-25T21:58:11.200 回答