【问题标题】:Sending converted jms with camel用骆驼发送转换后的jms
【发布时间】:2013-04-19 00:11:22
【问题描述】:

谁能帮帮我。我正在尝试使用骆驼发送消息。也许我的概念错了.w 我想向 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 并将其放入队列中。

非常感谢您的帮助。

【问题讨论】:

    标签: spring jms activemq apache-camel


    【解决方案1】:

    当你有一个路由时,从一个 bean 开始

    <from uri="bean:xxx"/>
    

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

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

    【讨论】:

      【解决方案2】:

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

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

      定义路线为:

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

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

      ProducerTemplate template = camelcontext.createProducerTemplate();
      template.sendBody("direct:start", myPojo);
      

      【讨论】:

        猜你喜欢
        • 2012-11-10
        • 2017-08-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 1970-01-01
        • 2018-03-07
        • 2018-06-09
        • 2013-05-23
        相关资源
        最近更新 更多