RabbitMQ系列之四 Spring RabbitMQ整合

本文将会详细介绍Spring和RabbitMQ整合,其中主要介绍路由模式(Routing)其他模式大体差不多就不一一介绍
项目git地址:https://github.com/gitcaiqing/SpringRabbitMQ
1.项目结构
RabbitMQ系列之四 Spring RabbitMQ整合_第1张图片
2.创建Maven项目pom.xml引入关键jar包,下文中有些jar包用不到可删减

  
    UTF-8
    4.1.4.RELEASE
	2.5.0
  
  
  	
		com.rabbitmq
		amqp-client
		3.4.1
	
	
		org.slf4j
		slf4j-log4j12
		1.7.7
	
	
		org.apache.commons
		commons-lang3
		3.3.2
	
	
       	org.springframework.amqp
       	spring-rabbit
       	1.4.0.RELEASE
     
   	
   	
		org.springframework
		spring-core
		${spring.version}
	
	
		org.springframework
		spring-beans
		${spring.version}
	
	
		org.springframework
		spring-context
		${spring.version}
	
	
		org.springframework
		spring-tx
		${spring.version}
	
	
		org.springframework
		spring-web
		${spring.version}
	
	
		org.springframework
		spring-webmvc
		${spring.version}
	
	
		org.springframework
		spring-jdbc
		${spring.version}
	
	
		org.springframework
		spring-test
		${spring.version}
		test
	
	
    	org.springframework
    	spring-context-support
    	${spring.version}
	
  
  
  	
  		
  			maven-war-plugin
  			
  				3.0
  			
  		
  	
  

3.RabbitMQ连接配置config->RabbitMQ.properties

rmq.host=127.0.0.1
rmq.port=5672
rmq.user=guest
rmq.password=guest
rmq.channelCacheSize=25
rmq.virtual=/

4.Spring RabbitMQ整合配置xml文件
此文件中涉及到的一些对象,在下文中有定义


	Spring RabbitMQ 路由模式(Routing)配置
	
	
	
	
 	
 	
 	
 	
 	
 
 	
 	
 	
 	
 	
 		
 			
 		
 	
 	
 	
 	

	
	
		
		
	
	
	
 	
	
	
 	
 		
 	
 	

**5.**生产者

package com.rabbitmq.producter;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

//生产者
public class Producter {

	private RabbitTemplate rabbitTemplate;
	private String routekey;
	
	public Producter(RabbitTemplate rabbitTemplate, String routekey) {
		this.rabbitTemplate = rabbitTemplate;
		this.routekey = routekey;
	}
	
	public void sendMessage(String message) {
		rabbitTemplate.convertAndSend(routekey, message);
	}
}

6.消费者

package com.rabbitmq.consumer;
import java.io.UnsupportedEncodingException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
/**
 * 消费者
 * 实现 MessageListener或ChannelAwareMessageListener(需手动确认的实现此接口)
 */
public class Consumer implements MessageListener{

	public void onMessage(Message message) {
		String msg = null;
		try {
			msg = new String(message.getBody(),"UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		System.out.println("消费者消费:"+msg);
	}
}

7.路由模式测试

package com.rabbitmq.controller;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.rabbitmq.producter.Producter;

//路由模式测试
public class RoutingTest {
	public static void main(String[] args) {
		AbstractApplicationContext  ctx = new ClassPathXmlApplicationContext("spring-rabbitmq-routing.xml");
		Producter routingProducter = ctx.getBean(Producter.class);
		String message = "spring rabit routing hello!";
		routingProducter.sendMessage(message);
		ctx.close();
	}
}

8.其他模式
其他模式就不一一实现,这里简单的把发布订阅模式和通配符模式和Spring整合配置文件介绍下。发布定义模式没有去掉路由键,通配符模式则是讲路由缓存类似正则表达式去匹配即可
8.1发布订阅模式配置文件


	Spring RabbitMQ 发布订阅模式(publish_subscrible)配置
	
	
	
	
 	
 	
 	
 	
 	
 
 	
 	
 	
 	
 	
 		
 			
 		
 	
 	
 	
 	

	
	
		
		
	
	
	
 	
	
	
 	
 		
 	
 	

8.2通配符模式配置文件


	Spring RabbitMQ 通配符模式(Topics)配置
	
	
	
	
 	
 	
 	
 	
 	
 
 	
 	
 	
 	
 	
 		
 			
 			
 		
 	
 	
 	
 	

	
	
		
		
	
	
	
 	
	
	
 	
 		
 	
 	

你可能感兴趣的:(消息中间件,Spring,RabbitMQ,Spring,RabbitMQ整合,RabbitMQ模式)