本章主要建立在已经安装好Erlang以及RabbitMQ的基础上,接下来,简单介绍一下使用
一、Direct直接模式
通过routingKey和exchange决定的那个唯一的queue可以接收消息
1、首先到RabbitMQ的管理界面新建一个队列(Direct模式)
2、测试项目的基础结构如下:
这里为了方便测试,直接在父项目中建立两个子模块(生产者和消费者)
3、pom.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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>rab-consumer</module> <module>rab-producer</module> </modules> <p>本文来源gao!daima.com搞$代!码#网#</p> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>interview</groupId> <artifactId>rabbitmq-interview</artifactId> <version>0.0.1-SNAPSHOT</version> <name>rabbitmq-interview</name> <description>Demo rabbitmq project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--1、amqp高级消息队列的依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!--2、测试的依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
4、准备发送的数据
回到IDEA中,打开子模块的生产者模块,我这边是rab_producer,在resource下建立springboot的配置文件:application.yml文件,内容如下:
spring: rabbitmq: host: localhost # host 为RabbitMQ主机的地址
之后新建一个SpringBoot的启动类:
@SpringBootApplication public class RabbitMQApplication { public static void main(String[] args) { SpringApplication.run(RabbitMQApplication.class); } }
然后新建测试类:
@RunWith(SpringRunner.class) // 固定写法 @SpringBootTest(classes = RabbitMQApplication.class) // SpringBoot启动类(自定义的) public class RabTest { @Autowired private RabbitTemplate rabbitTemplate; // 注入一个RabbitMQ的模板对象,操作消息队列的对象 // 发送一条点对点(Direct)的消息,又称为直连 @Test public void sendQueue(){ System.out.println("开始向队列中发送一条消息!"); // 参数1:管理中的队列名 参数2:发送的消息 rabbitTemplate.convertAndSend("weiku","message:这是一条消息!"); System.out.println("消息发送完毕!"); } }