我正在尝试使用名为Apache Camel
的{{1}}接口,但遇到了一些困难。我希望将1)的消息发送到JBoss Fuse应用服务器中的ActiveMQ队列,2)由Camel处理器处理,然后3)发送到源代码中指定的其他队列。现在发生的是主打印中的SOP语句和Logging上的一些错误消息,但没有任何内容从程序发送到队列。
这是我的代码:
Processor
这是当前的输出:
在MyOwnProcessor.java中启动main方法
SLF4J:无法加载类" org.slf4j.impl.StaticLoggerBinder"。 SLF4J:默认为无操作(NOP)记录器实现 SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder。
主要完成。
答案 0 :(得分:1)
试试这个,
public static void main(String args[]) throws Exception {
// create CamelContext
CamelContext context = new DefaultCamelContext();
// connect to embedded ActiveMQ JMS broker
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
context.addComponent("jms",
JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
// add our route to the CamelContext
context.addRoutes(new RouteBuilder() {
@Override
public void configure() {
from("jms:queue:QueueA")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
String s = exchange.getIn().getBody(String.class);
System.out.println("The body of the message is: " + s);
}
}).to("jms:queue:QueueB");
}
});
// start the route and let it do its work
context.start();
Thread.sleep(10000);
// stop the CamelContext
context.stop();
}
答案 1 :(得分:0)
创建路由不会导致它运行 - 您仍然需要一个正在运行的CamelContext,并且需要传递一条消息才能启动它。尝试首先使用它,只需使用处理器的匿名内部类:
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
RouteBuilder builder = new RouteBuilder() {
public void configure() {
from("direct:source").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("Success!");
}
});
}
};
context.addRoutes(builder);
ProducerTemplate template = context.createProducerTemplate();
context.start();
template.sendBody("direct:source", "test");
}
一旦有效,添加一个实现Processor的单独类,并使用它而不是匿名内部类。