gpt4 book ai didi

java - Apache Camel : Why I can't send bean text to jms

转载 作者:行者123 更新时间:2023-12-01 12:14:50 24 4
gpt4 key购买 nike

我有非常简单的 pojo 类:

public class MessageBean {

String text;

public String getMessage()
{
return text;
}

}

还有 Camel 路线:

public static void main(String[] args) {

final MessageBean bean = new MessageBean();
bean.text = "This is the text";

CamelContext context = new DefaultCamelContext();
ConnectionFactory conFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");

context.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(conFactory));

try {
context.addRoutes(new RouteBuilder() {

@Override
public void configure() throws Exception {

from("direct:hello").process(new Processor() {

public void process(Exchange exchange) throws Exception {

exchange.getIn().setBody(bean);
}
}).setBody(simple("${body.message}")).to("jms:queue:Test.Queue");
}
});
} catch (Exception e) {
e.printStackTrace();
}

try {
context.start();
Thread.sleep(5000);
context.stop();
} catch (Exception e) {
e.printStackTrace();
}

}

我不明白为什么我无法将文本从bean变量text发送到activemq队列?

当我尝试从文件夹发送 txt 文件时,它会正确发送到 jms 中的队列。

最佳答案

要将消息插入 Camel 路由,您需要将其发送到路由中作为使用者的端点,在本例中为 direct:start。此处最简单的方法是使用ProducerTemplate。上下文启动后:

 ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", bean);

尽管如果您最终只想将 bean.getMessage() 的内容发送到您的 JMS 队列(这就是您在这里尝试做的事情),您可以这样做相反,并从您的 route 删除 setBody() 调用:

 template.sendBody("direct:start", bean.getMessage());

More information on ProducerTemplate

关于java - Apache Camel : Why I can't send bean text to jms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27081978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com