我不确定我的小应用程序有什么问题,如果它驻留在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();