代码示例如下:
package com.ustcinfo.CamelDemo.activeMQ;
import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.impl.DefaultCamelContext;
class ActiveMQDemo {
private static String user = "admin";
private static String password = "admin";
//填写AMQ的IP
private static String url = "failover://tcp://localhost:61777";
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
//创建AMQ的连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, url);
context.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
System.out.println(url + " " + user + " " + password);
context.addRoutes(new RouteBuilder() {
public void configure() {
// j
from("jetty:http://localhost:5555/activeMQDemo").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
// TODO Auto-generated method stub
String msg = exchange.getIn().getBody(String.class);
System.out.println("接收的消息为 : " + msg);
exchange.getOut().setBody(msg, String.class);
}
}).to("jms:queue:queueName?disableReplyTo=true&preserveMessageQos=true");
}
});
context.start();
boolean loop = true;
while (loop) {
Thread.sleep(25000);
}
context.stop();
}
}
注意:
AMQ可作为消费者也可作为生产者,他们的uri可通用,其中disableReplyTo=true,表示不必等到生产的消息被消费时才会返回,相当于异步发送消息。
需要导包:
<!--jms amq -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>2.16.2</version>
</dependency>
<!-- activemq包 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>5.9.0</version>
</dependency>
总结:
一开始的时候百度了了各种方法,说的都和上面几乎差不多的代码,我也尝试了一天,但是都不能够发送消息和接收消息,一直报找不到spring的jar包的错误,后来导入下面的jar包后问题解决啦!!!
<dependency>
<groupId>org.springframework</groupId>
//这个非常重要
<artifactId>spring-jms</artifactId>
<version>${spring-framework.version}</version>
</dependency>