RabbitMQ使用教程

1、基础性知识文档介绍
关系RabbitMQ的一些使用场景和使用背景,基础性的概念知识,请参考这篇文章 消息队列之 RabbitMQ 。
2、如何在MacOS 上安装RabbitMQ
关于安装,请参考这篇文章,亲测有效。在MacOS 上安装RabbitMQ

这里我使用的是macOS 10.13 版本,启动的时候需要找到RabbitMQ在本地的位置。

启动rabbitmq-server

cd /usr/local/Cellar/rabbitmq/3.7.2/sbin
sudo ./rabbitmq-server

打开浏览器并访问:http://localhost:15672/,并使用默认用户guest登录,密码也为guest。我们可以看到如下图的管理页面:

点击Admin标签,在这里可以进行用户的管理。

3、Springboot集成RabbitMQ
通过在Spring Boot应用中整合RabbitMQ,并实现一个简单的发送、接收消息的例子来对RabbitMQ有一个直观的感受和理解。

在Spring Boot中整合RabbitMQ是一件非常容易的事,因为之前我们已经介绍过Starter POMs,其中的AMQP模块就可以很好的支持RabbitMQ,下面我们就来详细说说整合过程:

在pom.xml中引入如下依赖内容,其中spring-boot-starter-amqp用于支持RabbitMQ。

org.springframework.boot spring-boot-starter-parent 1.3.7.RELEASE org.springframework.boot spring-boot-starter-amqp org.springframework.boot spring-boot-starter-test test 在application.properties中配置关于RabbitMQ的连接和用户信息,用户可以回到上面的安装内容,在管理页面中创建用户。

队列配置

发送者

接收者

测试类中

运行结果:

注意事项:

发送者和接收者的queue name必须一致,不然不能接收。

多个发送者和接收者,接收端仍然会均匀接收到消息。

springboot以及完美的支持对象的发送和接收,不需要格外的配置。

//发送者
public void send(User user) {
System.out.println("Sender object: " + user.toString());
this.rabbitTemplate.convertAndSend(“object”, user);
}

//接收者
@RabbitHandler
public void process(User user) {
System.out.println("Receiver object : " + user);
}
Topic Exchange

topic 是RabbitMQ中最灵活的一种方式,可以根据routing_key自由的绑定不同的队列。 首先对topic规则配置,这里使用两个队列来测试

使用queueMessages同时匹配两个队列,queueMessage只匹配”topic.message”队列

发送send1会匹配到topic.#和topic.message 两个Receiver都可以收到消息,发送send2只有topic.#可以匹配所有只有Receiver2监听到消息

接收者

Fanout Exchange

Fanout 就是我们熟悉的广播模式或者订阅模式,给Fanout交换机发送消息,绑定了这个交换机的所有队列都收到这个消息。

这里使用了A、B、C三个队列绑定到Fanout交换机上面,发送端的routing_key写任何字符都会被忽略:

发送者

接收者

结果如下:

结果说明,绑定到fanout交换机上面的队列都收到了消息

Guess you like

Origin blog.csdn.net/m0_51945027/article/details/119968560