RabbitMQ简单案例
简单笔记
一、概述
抄的
1.1消息队列中间件简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有 ActiveMQ(安全),RabbitMQ,ZeroMQ,Kafka(大数据),MetaMQ,RocketMQ 以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景 1.2什么是RabbitMQ RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括: 1.可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。2.灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个Exchange 绑定在一起,也通过插件机制实现自己的 Exchange 。 3.消息集群(Clustering) 多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker 4.高可用(Highly Available Queues) 队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。 5.多种协议(Multi-protocol) RabbitMQ 支持多种消息队列协议,比如 STOMP、MQTT 等等。 6.多语言客户端(Many Clients) RabbitMQ 几乎支持所有常用语言,比如 Java、.NET、Ruby 等等。 7.管理界面(Management UI) RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。 8.跟踪机制(Tracing) 如果消息异常,RabbitMQ 提供了消息跟踪机制,使用者可以找出发生了什么。 9.插件机制(Plugin System) RabbitMQ 提供了许多插件,来从多方面进行扩展,也可以编写自己的插件。
二、安装 window版本
安装准备工具(备用的,因为是别人的。我没用。未验证) 1.下载Eralng,底下连接已提供otp_win64_20.2.exe 链接: https://pan.baidu.com/s/1ha-OGMa9AGZFamELP_b48w. 提取码:3gpa 2.下载rabbitmq,底下链接已提供rabbitmq-server-3.7.4.exe 链接: https://pan.baidu.com/s/1kGMjBc_H1QWRPEs8dRYaHA . 提取码:vzar
为甚安装RabbitMQ需要安装 Erlang OTP
因为rabbitmq服务器是由Erlang语言编写的,所以需要先安装erlang环境:
用的这个 RabbitMQ官网,安装时会跳转 Erlang OTP页面 https://www.rabbitmq.com/install-windows.html#installer
原文链接:https://blog.csdn.net/qq_47588845/article/details/107986373 安装用的
ps: rabbitmq-plugins enable rabbitmq_management、
访问地址:
http://127.0.0.1:15672
name: guest
pwd: guest
linux版本教程(未验证
? https://blog.csdn.net/aurora125/article/details/115693701
三、使用
注意:使用有很多方法,本次所用的是amqp。有时间继续探讨其他方法。
分为生产者和消费者
1、加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、主程序中(启动程序)加入创建队列
@Bean
public Queue orderQueue() {
return new Queue("Hello", true);
}
@Bean
public Queue nidaye() {
return new Queue("nidaye", true);
}
Queue(String name, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)
name: 队列名称
durable : 持久化
exclusive : 声明排他队列,只能被声明者使用
autoDelete : 服务器删除队列不再使用
arguments: 用于声明队列的参数
3、创建生产者
@Autowired
private AmqpTemplate t;
@PostMapping("/producer")
public void producer() {
t.convertAndSend("nidaye", "你大爷");
t.convertAndSend("Hello","我是你爸爸");
System.out.println("我执行了");
}
4、创建消费者
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@RabbitListener(queues = "Hello")
@Component
public class consumerController {
@RabbitHandler
public void receive(String msg) {
System.out.println(msg);
}
}
5、结果

仅为本菜鸟笔记。
|