(八) Spring整合RabbitMQ进行消息队列开发

来源:互联网 发布:dota选手知乎 编辑:程序博客网 时间:2024/06/05 00:17

Spring AMQP提供了org.springframework.amqp.core.AmqpTemplate来发送与接收消息。RabbitMQ是Spring AMQP官方示例中所用的默认AMQP实现。
在项目pom.xml文件中添加依赖:

<!-- rabbitmq配置 -->  <dependency>      <groupId>com.rabbitmq</groupId>      <artifactId>amqp-client</artifactId>      <version>3.4.1</version>  </dependency>  <dependency>      <groupId>org.springframework.amqp</groupId>      <artifactId>spring-rabbit</artifactId>      <version>1.4.0.RELEASE</version>  </dependency>  

Spring配置文件:

<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/rabbit      http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd      http://www.springframework.org/schema/beans      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">      <!-- 定义RabbitMQ的连接工厂 -->      <rabbit:connection-factory id="connectionFactory"          host="${rabbit.host}" port="${rabbit.port}" username="${rabbit.username}"          password="${rabbit.password}" virtual-host="${rabbit.vhost}" />      <!-- MQ的管理,包括队列、交换器等 -->      <rabbit:admin connection-factory="connectionFactory" />      <!-- 定义队列,自动声明 -->      <rabbit:queue name="SEARCH-TAOTAO-QUEUE-ITEM"          auto-declare="true" durable="true" />      <!-- 消费者进行队列监听 -->      <rabbit:listener-container          connection-factory="connectionFactory">          <rabbit:listener ref="rabbitMQHandler" method="execute"              queue-names="SEARCH-TAOTAO-QUEUE-ITEM" />      </rabbit:listener-container>      <!-- 消费消息的bean -->      <bean id="rabbitMQHandler" class="com.taotao.solr.rabbit.RabbitMQHandler" />  </beans>  

java生产者代码:

public class SpringMain {      public static void main(final String... args) throws Exception {          AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring/rabbitmq-context.xml");           // RabbitMQ模板          RabbitTemplate template = ctx.getBean(RabbitTemplate.class);          // 发送消息          template.convertAndSend("Hello, world!");           // 休眠1秒          Thread.sleep(1000);        // 容器销毁          ctx.destroy();     }  }  

Java消费者代码:

public class Foo {        // 具体执行业务的方法      public void listen(String foo) {          System.out.println("消费者: " + foo);      }  }  
0 0
原创粉丝点击