Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阿帕奇骆驼:为什么我能';t将bean文本发送到jms_Java_Jms_Apache Camel - Fatal编程技术网

Java 阿帕奇骆驼:为什么我能';t将bean文本发送到jms

Java 阿帕奇骆驼:为什么我能';t将bean文本发送到jms,java,jms,apache-camel,Java,Jms,Apache Camel,我有一个非常简单的pojo类: public class MessageBean { String text; public String getMessage() { return text; } } 和骆驼路线: public static void main(String[] args) { final MessageBean bean = new MessageBean(); bean.text =

我有一个非常简单的pojo类:

public class MessageBean {

    String text;

    public String getMessage()
    {
        return text;
    }

}
和骆驼路线:

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中的队列时。

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

 ProducerTemplate template = context.createProducerTemplate();
 template.sendBody("direct:start", bean);
虽然如果您最终只想将
bean.getMessage()
的内容发送到JMS队列(这就是您在这里尝试执行的操作),但您可以只执行此操作,并从路由中删除
setBody()
调用:

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

您只需使用ProducerTemplate发送消息(甚至可能是一条空消息),即可启动路由。