Apache Camel:生产者模板不会添加到 SEDA 终结点



我不确定我的小应用程序有什么问题,如果它驻留在RouteBuilder上还是在ProducerTemplate

无论哪种方式,运行此应用程序时都不会记录我的"Test message"

这里可能出了什么问题?

public static void main(String[] args) {
        Main main = new Main();
        main.addRouteBuilder(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("seda:myqueue").log(LoggingLevel.INFO, "${in.body").end();
            }
        });

        ProducerTemplate producerTemplate = main.getOrCreateCamelContext().createProducerTemplate();
        producerTemplate.setDefaultEndpointUri("seda:myqueue");
        producerTemplate.sendBody("Test message");
    }

看起来您不像是在创建和启动上下文,这可能就是消息永远不会到达您的路由的原因。下面是一个帮助您入门的示例:

https://examples.javacodegeeks.com/enterprise-java/apache-camel/apache-camel-hello-world-example/

import org.apache.activemq.camel.component.ActiveMQComponent;
import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class CamelHelloWorldExample {
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        try {
            context.addComponent("activemq", ActiveMQComponent.activeMQComponent("vm://localhost?broker.persistent=false"));
            context.addRoutes(new RouteBuilder() {
                @Override
                public void configure() throws Exception {
                    from("activemq:queue:test.queue")
                    .to("stream:out");
                }
            });
            ProducerTemplate template = context.createProducerTemplate();
            context.start();
            template.sendBody("activemq:test.queue", "Hello World");
            Thread.sleep(2000);
        } finally {
            context.stop();
        }
    }
}

注意 context.start() 和 context.stop();

最新更新