RabbitMQ入门教程(十六):RabbitMQ与Spring集成
2017-12-14 18:06
471 查看
简介
集成示例基本目录结构一:引入相关依赖
引入Spring核心的依赖和spring-rabbit依赖,注意spring-rabbit依赖不要使用最新的版本,这里使用的1.7.5.RELEASE,使用2.0.0的会报错<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lin</groupId> <artifactId>rabbit_c2</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <spring.version>4.2.3.RELEASE</spring.version> </properties> <dependencies> <!-- 添加Spring依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!--单元测试依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!--spring单元测试依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!--rabbitmq依赖 1.7.5.RELEASE, 不要使用2.x.x版本会报错--> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.7.5.RELEASE</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.0.1.Final</version> </dependency> </dependencies> </project>
二:配置Rabbit连接参数application.properties
rabbit.host=127.0.0.1 rabbit.port=5672 rabbit.username=guest rabbit.password=guest rabbit.vhost=/
三:配置Spring的配置文件
applicationContext.xml Spring总的配置文件<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="false"> <description>Spring总配置文件</description> <context:component-scan base-package="com.mengday.rabbitmq" /> <context:annotation-config /> <context:spring-configured /> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <value>classpath*:/application.properties</value> </list> </property> </bean> <import resource="applicationContext-rabbit.xml"/> </beans>
Spring对应的rabbit配置文件 applicationContext-rabbit.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd"> <!--配置connection-factory,指定连接rabbit server参数 --> <rabbit:connection-factory id="connectionFactory" host="${rabbit.host}" port="${rabbit.port}" username="${rabbit.username}" password="${rabbit.password}" virtual-host="${rabbit.vhost}"/> <!--定义rabbit template用于数据的接收和发送 --> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="exchangeTest"/> <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 --> <rabbit:admin connection-factory="connectionFactory" /> <!--定义queue --> <rabbit:queue name="queueTest" durable="true" auto-delete="false" exclusive="false" /> <!-- 定义direct exchange,绑定queueTest --> <rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false"> <rabbit:bindings> <rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding> </rabbit:bindings> </rabbit:direct-exchange> <!-- 消息接收者 --> <bean id="messageReceiver" class="com.mengday.rabbitmq.MessageConsumer"></bean> <!-- queue litener 自动监听队列,当有消息到达时会通知监听在对应的队列上的监听对象--> <rabbit:listener-container connection-factory="connectionFactory"> <rabbit:listener queues="queueTest" ref="messageReceiver"/> </rabbit:listener-container> </beans>
四:消息监听
MessageConsumer.javapackage com.mengday.rabbitmq; public class MessageConsumer implements MessageListener { public void onMessage(Message message) { System.out.println("Received:" + message); } }
五:发送消息
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:conf/spring/applicationContext.xml" }) public class SpringRabbitTest extends AbstractJUnit4SpringContextTests { @Autowired private AmqpTemplate amqpTemplate; @Test public void sendMessage(){ Map<String, Object> log = new HashMap<String, Object>(); log.put("level", "info"); log.put("timestamp", new Date()); log.put("operateId", 666); log.put("msg", "修改密码,修改前密码:123456,修改后密码:111111"); amqpTemplate.convertAndSend("queueTestKey", log); } }
六:运行结果
示例源码下载
http://download.csdn.net/download/vbirdbest/10158927相关文章推荐
- RabbitMQ入门教程 For Java【9】 - 与Spring集成
- RabbitMQ入门教程 For Java【8】 - 与Spring集成
- 1 Springboot SpringCloud集成OAuth2入门详细教程
- Spring Boot 集成RabbitMQ入门Demo
- Mina入门教程(二)----Spring4 集成Mina
- Mina入门教程(二)----Spring4 集成Mina
- SpringBoot 入门教程:集成mybatis,redis
- Mina入门教程(二)----Spring4 集成Mina
- SpringBoot 入门教程:集成mybatis,redis
- Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus
- Springboot SpringCloud集成OAuth2入门详细教程
- spring boot集成rabbitmq的实例教程
- RabbitMQ入门教程之二--》spring+rabbitmq简单demo
- SpringBoot 入门教程:集成mybatis,redis
- Spring详细教程入门(一)
- SpringBoot学习教程 - 06 - 集成MyBatis Generator自动生成代码
- springboot集成rabbitmq(一)
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
- IDEA建立Spring MVC Hello World 详细入门教程
- spring boot mybatis 入门教程