Spring AMQP RabbitMQ示例

今天我们将研究Spring AMQP RabbitMQ示例应用程序。我们之前的帖子中已经讨论了一些“Spring AMQP基础知识理论”和“如何安装和设置RabbitMQ服务器”。请参考以下内容:

  • Spring AMQP
  • Spring RabbitMQ

在这篇文章中,我们将开发一个Spring AMQP RabbitMQ Messaging应用程序。我们现在就开始吧。

Spring AMQP RabbitMQ示例

让我们开始使用Maven,Eclipse IDE和RabbitMQ Server开发Spring AMQP RabbitMQ Messaging应用程序。对于所有其他Java IDE,它都是相同的。

请逐一执行以下步骤:


package com.tp.spring.amqp.rabbit;import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringAMQPRabbitSender {private final String SENDER_XML = "springamqp-rabbit-sender-context.xml";public static void main(String[] args) throws Exception {AmqpTemplate amqpTemplate = (AmqpTemplate)(new ClassPathXmlApplicationContext(SENDER_XML)).getBean("amqpTemplate");int messagCount = 0;while (messagCount < 10){amqpTemplate.convertAndSend("tp.routingkey.1", "Message # " + messagCount++);}System.out.println( messagCount + " message(s) sent successfully.");}
}

<?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.1.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd"><rabbit:connection-factory id="connectionFactory" host="localhost" username="tpuser" password="tpuser"/><rabbit:admin connection-factory="connectionFactory"/><rabbit:template id="amqpTemplate" connection-factory="connectionFactory"exchange="tpExchange"/>
</beans>

package com.tp.spring.amqp.rabbit;import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
// Spirng MDP(Message Driven POJO)
public class SpringAMQPRabbitAyncListener implements MessageListener {@Overridepublic void onMessage(Message message) {System.out.println("Listener received message = " + new String(message.getBody()));}
}

<?xmlversion="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.1.xsd http://www.springframework.org/schema/rabbithttp://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd"><rabbit:connection-factory id="connectionFactory" host="localhost" username="tpuser" password="tpuser"/><rabbit:admin connection-factory="connectionFactory"/><rabbit:queue id="tpQueue"/><rabbit:topic-exchange id="tpExchange" name="tpExchange"><rabbit:bindings><rabbit:binding queue="tpQueue" pattern="tp.routingkey.1"></rabbit:binding></rabbit:bindings></rabbit:topic-exchange><bean id="asyncListener" class="com.tp.spring.amqp.rabbit.SpringAMQPRabbitAyncListener"/><rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory"><rabbit:listener ref="asyncListener" queue-names="tpQueue"/></rabbit:listener-container></beans>

package com.tp.spring.amqp.rabbit;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringAMQPRabbitlListenerContainer {public static void main(String[] args) {// Initialize Spring IOC Containernew ClassPathXmlApplicationContext("springamqp-rabbt-listener-context.xml");}
}

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.tp</groupId><artifactId>spring-amqp-rabbitmq</artifactId><name>spring-amqp-rabbitmq</name><packaging>jar</packaging><version>1.0.0</version><properties><java-version>1.6</java-version><org.springframework-version>3.1.1.RELEASE</org.springframework-version><org.aspectj-version>1.6.10</org.aspectj-version><org.slf4j-version>1.6.6</org.slf4j-version></properties><dependencies><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework-version}</version><exclusions><!-- Exclude Commons Logging in favor of SLF4j --><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework-version}</version></dependency><!-- AspectJ --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${org.aspectj-version}</version></dependency>    <!-- Logging --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${org.slf4j-version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${org.slf4j-version}</version><scope>runtime</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><exclusions><exclusion><groupId>javax.mail</groupId><artifactId>mail</artifactId></exclusion><exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion><exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion><exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion></exclusions><scope>runtime</scope></dependency><!-- @Inject --><dependency><groupId>javax.inject</groupId><artifactId>javax.inject</artifactId><version>1</version></dependency><!-- Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- Test --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency><dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.1.1.RELEASE</version></dependency><dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-amqp</artifactId><version>1.1.4.RELEASE</version></dependency></dependencies><build><plugins><plugin><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><additionalProjectnatures><projectnature>org.springframework.ide.eclipse.core.springnature</projectnature></additionalProjectnatures><additionalBuildcommands><buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand></additionalBuildcommands><downloadSources>true</downloadSources><downloadJavadocs>true</downloadJavadocs></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.6</source><target>1.6</target><compilerArgument>-Xlint:all</compilerArgument><showWarnings>true</showWarnings><showDeprecation>true</showDeprecation></configuration></plugin><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.2.1</version><configuration><mainClass>org.test.int1.Main</mainClass></configuration></plugin></plugins></build>
</project>

  1. 在Eclipse IDE中创建Maven Java项目
  2. 开发Spring AMQP Publisher程序
  3. 配置Spring AMQP Publisher所需的bean:s​​pringamqp-rabbit-sender-context.xml
  4. 开发Spring AMQP Consumer(Spring MDP)计划
  5. 配置Spring AMQP Consumer所需的bean:s​​pringamqp-rabbt-listener-context.xml
  6. 开发Spring AMQP Rabbit Container程序来初始化Spring IOC Container
  7. 最终的pom.xml文件
  8. 我们的最终Maven项目结构

使用RabbitMQ Server测试Spring AMQP RabbitMQ示例

在这里我们可以看到AMQP Publisher成功发送了10条消息。

在这里,我们可以看到我们的RabbitMQ队列已成功从AMQP Publisher收到10条消息。

在这里我们可以看到AMQP Consumer从RabbitMQ队列中逐个接收每条消息。

在这里我们可以观察到RabbitMQ队列有0条消息,这意味着AMQP Consumer已成功接收到所有消息。

  1. 运行AMQP Publisher并观察RabbitMQ队列中的消息
  2. RabbitMQ控制台在队列中显示10条消息
  3. 运行AMQP Consumer并在Eclipse IDE中观察消息
  4. RabbitMQ控制台在队列中显示0条消息

注意:有了Spring AMQP RabbitMQ Messaging的知识,您可以阅读有关Spring AMQP API的更多信息并学习新知识。并通过RabbitMQ Server文档获取有关Exchange,队列等的更多详细信息。

注意:正如我在之前的帖子中告诉你的那样,Spring AMQP API和RabbitMQ Server都来自The Pivotal Team

这就是开发Spring AMQP RabbitMQ Messaging示例。我将在以后的帖子中讨论和开发Spring AMQP ActiveMQ Messaging示例。

进一步阅读:Apache ActiveMQ。

Spring AMQP RabbitMQ示例相关推荐

  1. amqp rabbitmq_Spring AMQP RabbitMQ示例

    amqp rabbitmq Today we will look into Spring AMQP RabbitMQ example application. We have already disc ...

  2. Spring boot Rabbitmq 示例

    Spring boot Rabbitmq 示例 简介     Spring boot RabbitMQ 简单程序示例 编写详情 RabbitMQ docker     避免麻烦,直接使用docker启 ...

  3. spring amqp rabbitmq fanout配置

    基于spring amqp rabbitmq fanout配置如下: 发布端 <rabbit:connection-factory id="rabbitConnectionFactor ...

  4. php stomp rabbitmq,docker环境下的RabbitMQ部署,Spring AMQP使用

    AMQP简介 AMQP,即 Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦和 ...

  5. RabbitMQ(6)-Spring AMQP,Spring集成RabbitMQ

    2019独角兽企业重金招聘Python工程师标准>>> 一.Qucik Start 1.rabbitmq-producer.xml <?xml version="1. ...

  6. day72 JavaWeb框架阶段——RabbitMQ消息队列【了解常见的MQ产品,了解RabbitMQ的5种消息模型,会使用Spring AMQP】

    文章目录 0.学习目标 1.RabbitMQ 1.1.搜索与商品服务的问题 1.2.消息队列(MQ) 1.2.1.什么是消息队列 1.2.2.AMQP和JMS 1.2.3.常见MQ产品 1.2.4.R ...

  7. Spring AMQP 教程

    Spring AMQP 我们今天将研究Spring AMQP. 目录[ 隐藏 ] 1 Spring AMQP 1.1什么是AMQP? 1.2为什么我们需要AMQP? 1.3 JMS和AMQP之间的区别 ...

  8. Spring AMQP ActiveMQ教程

    Spring AMQP ActiveMQ教程 欢迎使用Spring AMQP ActiveMQ教程.之前我们研究过安装Apache ActiveMQ服务器.今天我们将创建一个Spring应用程序来使用 ...

  9. Spring AMQP参考手册

    一.快速入门 Maven依赖声明 <dependency>     <groupId>org.springframework.amqp</groupId>     ...

最新文章

  1. 【原创】关于部门月会(二)
  2. Android平台根目录文件
  3. ALEIDoc EDI(3)--change point01
  4. Solr+Hbase多条件查(优劣互补)
  5. 只能在测试中注射吗?
  6. 简单了解tengine
  7. CURLE_WRITE_ERROR
  8. 2021年上半年系统集成项目管理工程师案例分析真题及答案解析
  9. 买房后每月还贷是什么感觉?
  10. Dart云平台-DartPad
  11. @Valid注解的使用(转)
  12. latex 图片整行居中 /centering无效
  13. Ascll完整码表(256个)
  14. 阿里云 CentOS 7.4 下部署基于 Node.js 的微信小程序商城
  15. matlab中如何求插值点,MATLAB插值
  16. 大唐双龙传JAVA版小游戏_大唐双龙传_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]...
  17. C#【文件操作篇】PDF文件和图片互相转换
  18. 适应Linux32位的qq,Ubuntu 安装 QQ (简易安装 适合32位操作系统)
  19. 程序人生:我,颓废3年,怒加薪26K:成年人最顶级的自律,是逆着人性做事
  20. 【10月最新】必问的25道mybatis面试题,都会的话你也可以去大厂

热门文章

  1. 9:34 2009-7-28
  2. jQuery获取div的背景颜色 How to get background color of div?
  3. Magento教程 13:在Magento中设定联络表单的收件信箱
  4. [JavaScript] 判断网页能不能被IFrame 嵌入
  5. MySQL的Limit性能问题
  6. C++ rand,srand用法
  7. 【转载】Linux下用ls和du命令查看文件以及文件夹大小
  8. CMake和Make——简介和对比
  9. Linux sed命令完全攻略(超级详细)
  10. 首个windowsForm应用项目 1123