【RabbitMQ】异步消息及Rabbitmq安装

https://blog.csdn.net/weixin_73077810/article/details/133836287

https://www.bilibili.com/video/BV1mN4y1Z7t9/

同步调用和异步调用

如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。

如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)

同步调用的优势:时效性强,等待到结果后才返回。

同步调用的问题:1、拓展性差 2、性能下降 3、级联失败问题

异步调用方式是基于消息通知 的方式,一般包含三个角色:

消息发送者:投递消息的人,就是原来的调用方

消息Broker:管理、暂存、转发消息,你可以把它理解成微信服务器

消息接收者:接收和处理消息的人,就是原来的服务提供方

在异步调用中,发送者不再直接同步调用接收者的业务接口,而是发送一条消息投递给消息Broker。然后接收者根据自己的需求从消息Broker那里订阅消息。每当发送方发送消息后,接受者都能获取消息并处理。 这样,发送消息的人和接收消息的人就完全解耦了。

假如每个微服务的执行时长都是50ms,则原来整个业务的耗时可能高达300ms

使用消息队列后,业务耗时仅仅100ms,大大提高了业务性能。

异调用的优势:

1、耦合度低,拓展性强

2、异步调用,无需等待,性能好

3、故障隔离,下游服务故障不影响上游业务

4、缓存消息,流量削峰填谷

异步调用的问题:

1、不能立即得到调用结果,时效性差

2、不确定下游业务执行是否成功

3、业务安全依赖于Broker的可靠性

技术选型

消息Broker,目前常见的实现方案就是消息队列(MessageQueue)

rabbitmq安装

centos7先安装docker

java 复制代码
# yum 包更新到最新
yum update
# 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce -y
# 安装后查看docker版本
docker -v
# 安装加速镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0wrdwnn6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker安装Rabbitmq

java 复制代码
docker pull docker.io/rabbitmq:3.8-management

# 创建并运行容器、启动RabbitMQ管理插件
# docker run -di --name=myrabbit -p 15672:15672 rabbitmq:management
# 运行该命令后,Docker 会下载 RabbitMQ 镜像(如果本地没有的话),然后创建并启动一个名为 myrabbit 的容器,该容器使用了指定的端口映射和环境变量配置。您可以通过访问 http://ip:15672 来访问 RabbitMQ 的管理界面,并使用 admin/admin 进行登录
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:3.8-management

# 查看容器,获取到rabbitmq容器ID
docker ps -a
# 启动容器
docker start 容器ID


# 查看日志
docker logs -f myrabbit
相关推荐
鸽鸽程序猿3 小时前
【RabbitMQ】简介
分布式·rabbitmq
斯班奇的好朋友阿法法2 天前
rabbitmq在微服务中配置监听开关
微服务·rabbitmq·ruby
ZHE|张恒2 天前
Docker 安装 RabbitMQ
docker·rabbitmq
斯班奇的好朋友阿法法2 天前
rabbitmq服务端消费端实例(direct和fanout模式)
分布式·rabbitmq·ruby
斯班奇的好朋友阿法法2 天前
rabbitmq的多交换机(扇出为例)监听实现
分布式·rabbitmq·ruby
武话不港12 天前
RabbitMQ异常,handleDelivery方法异常
分布式·消息队列·rabbitmq
深思慎考3 天前
RabbitMQ 入门:基于 AMQP-CPP 的 C++ 实践指南与二次封装
开发语言·c++·分布式·rabbitmq·api
Mr.45673 天前
RabbitMQ消息传输中Protostuff序列化数据异常的深度解析与解决方案
rabbitmq
深思慎考3 天前
Ubuntu 系统 RabbitMQ 安装指南与使用(含 C++ 客户端与 SSL 错误解决)
c++·ubuntu·rabbitmq·github·rabbitmqpp
酷ku的森5 天前
RabbitMQ七种工作模式介绍:
分布式·rabbitmq