小工具      在线工具  汉语词典  css  js  c++  java

rabbitmq学习——spring集成rabbitmq实现简单的消息发送和接收

rabbitmq 额外说明

收录于:201天前

一、准备

创建一个spring项目,引入spring-amqp依赖pom信息。

<dependencies>
		<dependency>
			<groupId>com.rabbitmq</groupId>
			<artifactId>amqp-client</artifactId>
			<version>4.0.2</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.10</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.5</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
		</dependency>
		
		 <dependency>
			<groupId>org.springframework.amqp</groupId>
			<artifactId>spring-rabbit</artifactId>
		  	<version>1.7.5.RELEASE</version>
		</dependency>
	</dependencies>

二、编写demo

先看看整体的项目结构样式。
在这里插入图片描述
这些待会大家可以去我的github中下载或克隆使用。


回到主题,我们来完成一个简单的发送和接收消息的操作。

2.1、编写rabbitmq配置文件

<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.7.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
	
	<!-- 1.定义RabbitMQ的连接工厂 -->
	<rabbit:connection-factory id="connectionFactory" host="127.0.0.1" port="5672" username="xiangjiao" password="bunana" virtual-host="/xiangjiao" />
		
	
	<!-- 2.定义Rabbit模板,指定连接工厂以及定义exchange -->
	<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="fanoutExchange" />
	
	<!-- MQ的管理,包括队列、交换器 声明等 -->
	<rabbit:admin connection-factory="connectionFactory" />

	<!-- 定义队列,自动声明 -->
	<rabbit:queue name="myQueue" auto-declare="true" durable="true"/>
	
	<!-- 定义交换器,自动声明 -->
	<rabbit:fanout-exchange name="fanoutExchange" auto-declare="true">
		<rabbit:bindings>
			<rabbit:binding queue="myQueue"/>
		</rabbit:bindings>
	</rabbit:fanout-exchange>
	
	
	<!-- 队列监听 -->
	<rabbit:listener-container connection-factory="connectionFactory">
		<rabbit:listener ref="foo" method="listen" queue-names="myQueue" />
	</rabbit:listener-container>

	<!-- 消费者 -->
	<bean id="foo" class="cn.linkpower.spring.MyConsumer" />

</beans>

后面会用到上面的配置信息。

2.2、编写消息发送类

消息发送类,作为消息发送至消息队列上,需要使用到信道、连接信息等。
这些信息在配置文件中都有申明,所以我们此处需要引入配置文件信息,创建rabbitmq模板。

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/** * 消息生产者 * @author 765199214 * */
public class SpringSend {
    
	public static void main(String[] args) throws InterruptedException {
    
		//加载配置文件
		AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:context.xml");
		//RabbitMQ模板
		RabbitTemplate template = ctx.getBean(RabbitTemplate.class);
		//发送消息
		template.convertAndSend("Hello, world!");
		Thread.sleep(1000);// 休眠1秒
		ctx.destroy(); //容器销毁
	}
}

2.3、消息消费者的创建

因为消息消费者在项目启动时,就已经创建好了监听,所以,我们只需要按照配置好的监听处理的类,实现具体的操作即可。
在配置文件中,我们进行了如下的配置操作。
在这里插入图片描述
上面的配置顾名思义,类的全路径为 cn.linkpower.spring.MyConsumer,他其中有一个监听的触发处理方法,叫,所以我们编写一个消息处理类:

public class MyConsumer {
    
	   //具体执行业务的方法
    public void listen(String foo) {
    
        System.out.println("消费者: " + foo);
    }
}

三、尝试运行

运行SpringSend.java类,观察日志:
在这里插入图片描述
此时的消费者能够获取消息,并能对消息进行相关的处理操作。

四、源码

rabbitmq java代码和centos7安装包以及spring集成rabbitmq源码

. . .

相关推荐

额外说明

理论力学判断自由度的问题

数据来源:百度知道 pijon 2018.11.06 https://zhidao.baidu.com/question/269807637063276525.html 百度百科 https://baike.baidu.com/item/%E8%87%A

额外说明

数组转换字符串

一:数组转字符串(3种方法) toString(),toLocaleString(),join(),join(‘,’) JS 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法,如下 数组方法    说明 toString()  

额外说明

Java基础 第一节 第十课

扩展知识点 += 符号的扩展 常量和变量的运算 += 符号的扩展 下面程序有问题吗? public static void main(String[] args){ short s = 1; s+=1; System.out.println(s);

额外说明

3-1 C++中序列式容器

1. 常见的五种序列容器 所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 需要注意的是,序列容器只是一类容器的统称,并

额外说明

python学习一

1、安装包的时候我们可以使用 pip install -i 镜像地址 --trusted-host 镜像地址对应的host,例如 pip3 install pytest -i http://pypi.douban.com/sample/ --truste

额外说明

从零开始用Tensorflow实现YOLO物体检测算法

如果对Tensorflow实现最新的Yolo v7算法感兴趣的朋友,可见我最新的文章:Yolo v7的最简TensorFlow实现_gzroy的博客-CSDN博客 一直对物体检测算法很感兴趣,记录一下自己用Tensorflow来重现YOLO论文的过程。这

额外说明

Spark大数据处理讲课笔记1.8 掌握Scala函数

文章目录 零、本节学习目标 一、声明函数 (一)显式声明函数 1、声明格式 2、注意事项 3、案例演示 (1)加法函数 (2)阶乘函数 (二)隐式声明函数 1、声明格式 2、注意事项 3、案例演示 (1)加法函数 (2)三整数加法函数和阶乘函数 (3)打

额外说明

OpenCV学习笔记04:在Visual Studio上使用OpenCV4.5.5

文章目录 一、下载OpenCV 二、安装OpenCV 三、配置OpenCV (一)改成x64调试模式 (二)配置包含目录 (三)配置库目录 (四)配置链接器 (五)配置环境变量 四、显示图像 (一)编写程序,实现功能 (二)运行程序,查看结果 五、安装I

额外说明

React学习笔记:入门案例

React学习笔记:入门案例 React 起源于 Facebook 内部项目,因为市场上所有 JavaScript MVC 框架都不令人满意,公司就决定自己写一套,用来架设 Instagram 的网站。项目完成后,发现这套东西很好用,于是就在2013年5

额外说明

打开软件或运行出现找不到xactengine3_4.dll问题解决

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个xactengine3_4.dll文件进行安装(前提是找到适合

ads via 小工具