整合spring,RabbitMQ的使用
相关的jar包3个: rabbitmq-client.jar,spring-amqp.jar,spring-rabbit.jar
spring-rabbitmq.xml的相关配置
<!--连接配置-->
<rabbit:connection-factory id="connectionFactory" host="${mq.host}" port="${mq.port}" username="${mq.username}" password="${mq.password}"/>
<rabbit:admin connection-factory="connectionFactory"/>
<!--定义交换器-->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="cjlHb"/>
<!--定义queue-->
<rabbit:queue name="rabbitMQCjl" durable="true" exclusive="false" auto-delete="false"/>
<!--将queue绑定exchange上-->
<rabbit:topic-exchange name="cjlHb">
<rabbit:bindings>
<rabbit:binding queue="rabbitMQCjl" pattern="rabbitMQ.cjl.demo"></rabbit:binding>
</rabbit:bindings>
</rabbit:topic-exchange>
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="rabbitMQDemo" method="listen" queue-names="rabbitMQCjl"/>
</rabbit:listener-container>
<bean id="rabbitMQDemo" class="org.cjl.demo06.RabbitMQDemoReal"/>
<bean id="rabbitMQSender" class="org.cjl.demo06.RabbitMQSender"/>
config相关配置
mq.host=127.0.0.1
mq.username=guest
mq.password=guest
mq.port=5672
代码目录结构
相关代码
package org.cjl.demo06;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The type RabbitMQDemo.
*
* @author cjl
* @Description:
* @Date 2017/4/28
*/
public abstract class RabbitMQDemo<T extends Object> {
private static final Logger logger= LoggerFactory.getLogger(RabbitMQDemo.class);
public void listen(Object data){
logger.info("进来了。。。。");
//System.out.println("进来了。。。。");
String str=String.valueOf(data);
dosomething(str);
logger.info("结束了。。。。");
//System.out.println("结束了。。。。");
}
protected abstract void dosomething(String str);
}
package org.cjl.demo06;
/**
* The type RabbitMQDemoReal.
*
* @author cjl
* @Description:
* @Date 2017/4/28
*/
public class RabbitMQDemoReal extends RabbitMQDemo{
@Override
protected void dosomething(String str) {
System.out.println("做了一些事。。。。"+str);
}
}
package org.cjl.demo06;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
/**
* The type RabbitMQSender.
*
* @author cjl
* @Description:
* @Date 2017/4/28
*/
public class RabbitMQSender {
@Autowired
private AmqpTemplate amqpTemplate;
public void sendMQ(){
for (int i = 0; i <10 ; i++) {
System.out.println("第"+i+"次发送消息开始");
amqpTemplate.convertAndSend("rabbitMQ.cjl.demo","我是RabbitMQ");
System.out.println("第"+i+"次发送消息结束");
}
for (int i = 0; i <10 ; i++) {
System.out.println("第"+i+"次发送其他消息开始");
amqpTemplate.convertAndSend("rabbitMQ.cjl.demo01","我是RabbitMQ");
System.out.println("第"+i+"次发送其他消息结束");
}
}
}
package org.cjl.demo06;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* The type RabbitMQMain.
*
* @author cjl
* @Description:
* @Date 2017/4/28
*/
public class RabbitMQMain {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
RabbitMQSender rm=applicationContext.getBean("rabbitMQSender",RabbitMQSender.class);
rm.sendMQ();
}
}
日志打印结果