zoukankan      html  css  js  c++  java
  • (转)RabbitMQ学习之spring整合发送同步消息

    http://blog.csdn.net/zhu_tianwei/article/details/40890543

    以下实现使用Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。

    1.所需jar包依赖

    [html] view plain copy
     
     print?
    1. <properties>  
    2.         <rabbitmq.version>3.0.4</rabbitmq.version>  
    3.         <spring.amqp.version>1.1.1.RELEASE</spring.amqp.version>  
    4.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    5.         <spring.version>3.1.2.RELEASE</spring.version>  
    6.     </properties>  
    7.     <dependencies>  
    8.         <dependency>  
    9.             <groupId>com.rabbitmq</groupId>  
    10.             <artifactId>amqp-client</artifactId>  
    11.             <version>${rabbitmq.version}</version>  
    12.         </dependency>  
    13.   
    14.         <dependency>  
    15.             <groupId>org.springframework.amqp</groupId>  
    16.             <artifactId>spring-rabbit</artifactId>  
    17.             <version>${spring.amqp.version}</version>  
    18.         </dependency>  
    19.   
    20.         <dependency>  
    21.             <groupId>org.springframework</groupId>  
    22.             <artifactId>spring-core</artifactId>  
    23.             <version>${spring.version}</version>  
    24.             <exclusions>  
    25.                 <!-- Exclude Commons Logging in favor of SLF4j -->  
    26.                 <exclusion>  
    27.                     <groupId>commons-logging</groupId>  
    28.                     <artifactId>commons-logging</artifactId>  
    29.                 </exclusion>  
    30.             </exclusions>  
    31.         </dependency>  
    32.         <dependency>  
    33.             <groupId>org.springframework</groupId>  
    34.             <artifactId>spring-context</artifactId>  
    35.             <version>${spring.version}</version>  
    36.         </dependency>  
    37.   
    38.         <dependency>  
    39.             <groupId>org.springframework</groupId>  
    40.             <artifactId>spring-test</artifactId>  
    41.             <version>${spring.version}</version>  
    42.             <scope>test</scope>  
    43.         </dependency>  
    44.   
    45.         <dependency>  
    46.             <groupId>junit</groupId>  
    47.             <artifactId>junit</artifactId>  
    48.             <version>4.8.1</version>  
    49.             <scope>test</scope>  
    50.         </dependency>  
    51.   
    52.         <dependency>  
    53.             <groupId>org.springframework.amqp</groupId>  
    54.             <artifactId>spring-amqp</artifactId>  
    55.             <version>${spring.amqp.version}</version>  
    56.             <classifier>sources</classifier>  
    57.             <scope>compile</scope>  
    58.         </dependency>  
    59.         <dependency>  
    60.             <groupId>commons-lang</groupId>  
    61.             <artifactId>commons-lang</artifactId>  
    62.             <version>2.6</version>  
    63.         </dependency>  
    64.         <dependency>  
    65.             <groupId>org.slf4j</groupId>  
    66.             <artifactId>slf4j-api</artifactId>  
    67.             <version>1.5.10</version>  
    68.         </dependency>  
    69.         <dependency>  
    70.             <groupId>org.slf4j</groupId>  
    71.             <artifactId>jcl-over-slf4j</artifactId>  
    72.             <version>1.5.10</version>  
    73.             <scope>runtime</scope>  
    74.         </dependency>  
    75.         <dependency>  
    76.             <groupId>org.slf4j</groupId>  
    77.             <artifactId>slf4j-log4j12</artifactId>  
    78.             <version>1.5.10</version>  
    79.             <scope>runtime</scope>  
    80.         </dependency>  
    81.         <dependency>  
    82.             <groupId>log4j</groupId>  
    83.             <artifactId>log4j</artifactId>  
    84.             <version>1.2.14</version>  
    85.             <scope>runtime</scope>  
    86.         </dependency>  
    87.         <dependency>  
    88.             <groupId>org.aspectj</groupId>  
    89.             <artifactId>aspectjweaver</artifactId>  
    90.             <version>1.6.9</version>  
    91.         </dependency>  
    92.     </dependencies>  


    2.application.properties配置

    [plain] view plain copy
     
     print?
    1. #============== rabbitmq config ====================  
    2. rabbit.hosts=192.168.101.210  
    3. rabbit.username=admin  
    4. rabbit.password=admin  
    5. rabbit.virtualHost=/  
    6. rabbit.queue=spring.queue.sync  
    7. rabbit.routingKey=spring.queue.sync  

    3.applicationContext.xml配置

    [html] view plain copy
     
     print?
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
    4.     xmlns:aop="http://www.springframework.org/schema/aop"  
    5.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
    6.                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    7.                         http://www.springframework.org/schema/aop  
    8.                         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
    9.                         http://www.springframework.org/schema/context  
    10.                         http://www.springframework.org/schema/context/spring-context-3.0.xsd"  
    11.     default-lazy-init="false">  
    12.   
    13.     <description>Spring公共配置 </description>  
    14.     <context:component-scan base-package="cn.slimsmart.rabbitmq.demo.spring" />  
    15.     <aop:aspectj-autoproxy />  
    16.     <!-- 定义受环境影响易变的变量 -->  
    17.     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    18.         <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />  
    19.         <property name="ignoreResourceNotFound" value="true" />  
    20.         <property name="locations">  
    21.             <list>  
    22.                 <!-- 标准配置 -->  
    23.                 <value>classpath*:/application.properties</value>  
    24.             </list>  
    25.         </property>  
    26.     </bean>  
    27.     <import resource="applicationContext-rabbitmq-sync.xml"/>  
    28. </beans>  

    4.applicationContext-rabbitmq-sync.xml配置

    [html] view plain copy
     
     print?
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.        xmlns:context="http://www.springframework.org/schema/context"  
    4.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.        xsi:schemaLocation="  
    6.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
    7.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">  
    8.   
    9.   
    10.     <!-- 创建connectionFactory -->  
    11.     <bean id="rabbitConnectionFactory"  
    12.       class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">  
    13.         <constructor-arg value="${rabbit.hosts}"/>  
    14.         <property name="username" value="${rabbit.username}"/>  
    15.         <property name="password" value="${rabbit.password}"/>  
    16.         <property name="virtualHost" value="${rabbit.virtualHost}"/>  
    17.         <property name="channelCacheSize" value="5"/>  
    18.     </bean>  
    19.       
    20.     <!-- 创建rabbitAdmin 代理类 -->  
    21. <!--     <bean id="rabbitAdmin" -->  
    22. <!--         class="org.springframework.amqp.rabbit.core.RabbitAdmin"> -->  
    23. <!--         <constructor-arg ref="rabbitConnectionFactory" /> -->  
    24. <!--     </bean> -->  
    25.       
    26.       
    27.     <!-- 创建rabbitTemplate 消息模板类 -->  
    28.     <bean id="rabbitTemplate"  
    29.         class="org.springframework.amqp.rabbit.core.RabbitTemplate">  
    30.         <constructor-arg ref="rabbitConnectionFactory"></constructor-arg>  
    31.         <property name="queue" value="${rabbit.queue}"></property>  
    32.         <property name="routingKey" value="${rabbit.routingKey}"></property>    
    33.     </bean>  
    34.       
    35.     <!-- 声明Queue并设定Queue的名称 -->    
    36. <!--     <bean id="helloWorldQueue"   -->  
    37. <!--         class="org.springframework.amqp.core.Queue">   -->  
    38. <!--         <constructor-arg value="${rabbit.queue}"></constructor-arg>   -->  
    39. <!--     </bean>   -->  
    40. </beans>  

    5.生产者Producer.java

    [java] view plain copy
     
     print?
    1. import org.springframework.amqp.core.AmqpTemplate;  
    2. import org.springframework.amqp.rabbit.core.RabbitTemplate;  
    3. import org.springframework.context.ApplicationContext;  
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    5.   
    6. //生产者  
    7. public class Producer {  
    8.     public static void main(String[] args) {  
    9.         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  
    10.         AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);    
    11.         amqpTemplate.convertAndSend("test spring sync");   
    12.     }  
    13. }  

    6.消费者Consumer.java

    [java] view plain copy
     
     print?
    1. import org.springframework.amqp.core.AmqpTemplate;  
    2. import org.springframework.amqp.rabbit.core.RabbitTemplate;  
    3. import org.springframework.context.ApplicationContext;  
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    5.   
    6. //消费者  
    7. public class Consumer {  
    8.     public static void main(String[] args) {  
    9.         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");  
    10.         AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);    
    11.         System.out.println("Received: " + amqpTemplate.receiveAndConvert());    
    12.     }  
    13. }  

    运行生产者向队列中发送一条消息,再运行消费者消费消息。

  • 相关阅读:
    好看的滚动条样式
    mysql常用语句
    实现点击左边菜单,然后右边弹出网页内容。
    封装一个tab思想方法实现点击的时候显示或隐藏效果
    JS对话框_JS模态对话框showModalDialog用法总结
    登录框
    git分支介绍和常用操作
    git 撤销删除恢复某次提交记录
    charles导出请求-转换格式应用至postman
    git工作流及提交操作
  • 原文地址:https://www.cnblogs.com/telwanggs/p/7124741.html
Copyright © 2011-2022 走看看