基于ubuntu上使用docke的Rabbitmq安装使用超详细细保姆级教程来了~

写在前面

建议使用Ubuntu的root用户进行部署,本文是傻瓜式教学,咱们直接上干货。详细的rabbitmq学习内容放在后面,有需要的可以往后翻翻~~

建立一个文件夹用于存放mq产生的数据

mkdir /data/rabbitmq -p

创建本地mq的数据存放目录

安装mq命令(直接拉取镜像加挂载配置文件目录)

直接一行搞定,–name参数是设置mq的名称的可以自行修改

docker run -d --hostname rabbit-svr --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /data/rabbitmq:/var/lib/rabbitmq rabbitmq:management

命令解释:docker 拉取mq的镜像以及对mq的端口进行映射,将需要用的端口从容器中暴露出来。如5672,一般都用这个,这是外部调用的端口。访问ui界面的端口是15672,25672用于部署集群,如果不需要进行集群部署可以暂不设置。

检查mq状态

docker ps | grep rabbit

rabbit是我的mq的名字,没有改名字的可以直接用,改了名字的自己修改
看不懂的建议直接docker ps或者docker ps -a

ok~ 可以收工了,是不是太短了?
短吗?
管他呢收工,绝不加班,睡觉
shuaige自拍.png

哈哈哈,开个玩笑~

插播一条名词解释

在这里插入图片描述

mq的UI界面使用教程

浏览器访问:

127.0.0.1:15672

如果是使用虚拟机,在windows上访问为:

<虚拟机ip>:15672

访问结果如下(我用的是虚拟机,在windows上访问采用的是上面的第二种方式)
mq主界面

用户名和密码一样默认是:

guest

进入主界面
mq主界面

可以看到一开始只有官方给你初始化的exchange,队列什么的都是空的。好,我们来使用教学

我们进入exchange界面

在这里插入图片描述

点击add… 创建我们自己的exchange

在这里插入图片描述
这里插入一点:
在这里插入图片描述

这里可以看到我们新建的exchange已经存在了,可以被查看到

在这里插入图片描述

接下来去建立一个队列

在这里插入图片描述

可以看到我们刚建立的队列(我起的名字是go_oss)

在这里插入图片描述

然后我们去绑定exchange并设置Routing_key

在这里插入图片描述

可以看到绑定成功

在这里插入图片描述

去exchange里给我们的队列发消息

在exchange界面里点进我们建立的队列,然后publish message
记得添加我们刚才设置的R_key值,然后写消息,然后点击左下角黑色publish message,会有个弹窗提示已经发了出去,close就行
在这里插入图片描述

可以看到已经有了一条消息

在这里插入图片描述

去查看我们刚才发的消息

点击队列里面
在这里插入图片描述

在get message里展开查看消息

在这里插入图片描述
可以看到刚才发的消息
ok 收工,下面是有关mq的一些知识

基本概念:

消息队列:保存消息的容器,用于在消息的传输过程中暂存消息。
交换机:接收生产者发送的消息,并根据一定的规则将消息路由到一个或多个队列中。
队列:存储消息的容器,等待消费者从队列中取走消息。
绑定:交换机和队列之间的关联规则。
消费者:从队列中接收并处理消息的应用程序。
在这里插入图片描述

特点:

可扩展性:通过添加更多的节点和队列,RabbitMQ可以实现水平扩展,满足大规模消息处理的需求。
可靠性:RabbitMQ具有持久化和通知机制,确保消息能够成功传递和处理。
灵活性:支持多种交换机类型和绑定选项,使得消息可以在多个路由路径中进行传递。
可管理性:提供可视化的管理界面,方便查看和管理队列、交换机、绑定和连接等信息。
支持多种编程语言:RabbitMQ提供了多种编程语言的客户端库,如Java、C#、Python等,使得它可以被不同的应用程序和平台所使用。

使用RabbitMQ的好处

解耦合:不同的应用程序之间可以通过消息进行通信,减少它们之间的直接联系,从而提高系统的可维护性和容错性。
提高性能:通过异步通信,RabbitMQ可以提高应用程序的性能和响应速度。
基本使用:
安装与部署:RabbitMQ可以通过多种方式安装和部署,包括使用Docker容器等。
配置与管理:通过RabbitMQ的管理界面或命令行工具,可以配置交换机、队列、绑定等,并进行监控和管理。
开发与集成:开发者可以使用RabbitMQ的客户端库,将RabbitMQ集成到应用程序中,实现消息的发送和接收。

MQ是如何保证数据一致性的

MQ(消息队列)通过一系列机制来确保数据的一致性。这些机制可以根据不同的MQ实现而有所不同,但通常包括以下几个方面:

持久化机制:MQ支持将队列和消息进行持久化,确保消息在MQ服务器重启后不丢失。这样即使在MQ服务器发生故障时,也能保证数据的一致性。
确认机制:在消息传递过程中,发送方会等待接收方的确认消息。例如,在RabbitMQ中,生产者发送消息到队列后,会等待队列发送确认消息,以确保消息已被成功接收和处理。这种机制可以避免消息丢失或重复发送,从而确保数据的一致性。
事务机制:MQ支持事务机制,可以将多条消息发送到队列中作为一个原子操作。如果事务中的任何一个步骤失败,整个事务会回滚,确保数据的一致性。这种机制在需要确保一系列消息操作的完整性时非常有用。
复制和同步机制:一些MQ实现(如Kafka)采用多副本机制,其中包含一个主副本和多个从副本。主副本负责处理读写请求,而从副本则用于备份数据。当主副本出现故障时,可以从从副本中选择一个新的主副本,以保证数据的可靠性和一致性。此外,Kafka还通过ISR(In-Sync Replicas)机制确保副本之间的数据同步,只有当副本与主副本同步时,它才被认为是有效的副本。
顺序写入:在某些MQ实现中,数据是按照顺序写入的,这可以确保数据的顺序性和一致性。

需要注意的是,不同的MQ实现可能采用不同的机制来确保数据的一致性,因此具体的实现细节可能会有所不同。在选择和使用MQ时,需要根据具体的应用场景和需求来评估不同MQ的数据一致性保证能力。同时,还需要结合其他技术手段(如分布式事务、数据库一致性协议等)来进一步提高整个系统的数据一致性。

exchange四种工作模式

在这里插入图片描述

mq的几种工作模式

简单模式(Simple Mode)

P------------>QUEUE------------>C

此模式下,有一个生产者和一个消费者,不需要使用交换机,而是使用默认的交换机。消息由生产者直接发送到队列中,然后由消费者从队列中取出并处理。

工作队列模式(Work Queue Mode)

在这种模式下,有一个生产者和多个消费者。这些消费者以竞争的方式从同一个队列中获取消息,每个消息只会被一个消费者处理。这种模式可以平衡多个消费者的负载,提高消息处理的效率。

P---------->QUEUE1----------->C1------------>C2

发布订阅模式(Publish/Subscribe Mode)

此模式需要一个类型为fanout的交换机。生产者将消息发送到交换机,然后交换机将消息广播到所有与其绑定的队列中。每个队列中的消息都可以被一个或多个消费者处理。这种模式实现了消息的广播和多播。

P ----------->X(交换机)--------->QUEUE---------> C1---------> C2

DIRECT模式(Routing Mode)

在此模式下,需要设置类型为direct的交换机。生产者发送消息到交换机时,需要指定一个routing key。交换机根据这个routing key将消息发送到相应的队列。每个队列也需要指定自己的routing key,只有匹配的routing key的队列才会接收到消息。这种模式允许生产者精确控制消息的路由

P---------->X----bangdingkey1-------->QUEUE1----------->C1----bangdingkey2-------->QUEUE2----------->C2

通配符模式(Topic)

这种模式类似于路由模式,但路由键支持通配符。生产者发送消息时指定一个带有通配符的路由键,交换机根据路由键和通配符的规则将消息发送到匹配的队列中。

P---------->X----.orange.-------->QUEUE1----------->C1------lazy.#------>QUEUE2----------->C2

  • 49
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值