栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RabbitMQ(基本概念+在docker容器化下安装与使用,集群搭建)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ(基本概念+在docker容器化下安装与使用,集群搭建)

一、MQ:

MQ全称MessageQueue(消息队列),是在消息的传输过程中保存消息的容器,多用于分布式系统之间进行通信。

MQ有如下特点

优势:1、应用解耦 2、任务异步处理 3、削峰填谷

劣势:1、系统可用性降低2、系统复杂性提高3、如何保证数据的一致性

常见的MQ产品:

本文主要讲解RabbitMQ的安装和使用。

二、RabbitMQ基本概念

1.Broker :接收和分发消息的应用, RabbitMQ Server 就是 Message Broker 2.Virtual host :出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类 似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务 时,可以划分出多个 vhost ,每个用户在自己的 vhost 创建 exchange / queue 等。 3.Connection : publisher / consumer 和 broker 之间的 TCP 连接 4.Channel :如果每一次访问 RabbitMQ 都建立一个 Connection ,在消息量大的时候建立 TCP Connection 的开销将是巨大的,效率也较低。 Channel 是在 connection 内部建立的逻辑连接, 如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯, AMQP method 包含 了 channel id 帮助客户端和 message broker 识别 channel ,所以 channel 之间是完全隔离的。 Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销。 5.Exchange : message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key ,分发 消息到queue 中去。常用的类型有: direct (point-to-point), topic (publish-subscribe) 和fanout (multicast) 6.Queue :消息最终被送到这里等待 consumer 取走 7.Binding : exchange 和 queue 之间的虚拟连接, binding 中可以包含 routing key 。 Binding 信息 被保存到 exchange 中的查询表中,用于 message 的分发依据

RabbitMQ提供了6种工作模式:简单模式、工作模式、发布与订阅模式、路由模式、主题模式、RPC远程调用模式。

rabbitmq安装(使用docker):

1.拉取镜像

docker pull rabbitmq:management

2.运行镜像

docker run -itd --name rabbit01 --hostname myrabbit -e RABBITMQ_DEFAULT_USER=qyl -e RABBITMQ_DEFAULT_PASS=qyl123 -p 15672:15672 -p  5672:5672 -p 25672:25672 rabbitmq:management

注意:RABBITMQ_DEFAULT_USER=qyl -e RABBITMQ_DEFAULT_PASS=qyl123这里设置的是(RABBITMQ_DEFAULT_USER)登录的账号和( RABBITMQ_DEFAULT_PASS)密码,根据自身来修改
可以使用docker ps 查看是否运行成功

成功后,可以通过配置的虚拟机的地址和端口号进行访问

 如果使用的是云服务器,那么你需要在对应的安全组中开放15672端口号。

三、RabbitMQ的集群搭建

创建三个rabbitmq容器

docker run -itd --name rabbit01 --hostname myrabbit01 -v /home/software/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=qyl-e RABBITMQ_DEFAULT_PASS=qyl-e RABBITMQ_ERLANG_cookie='rabbitmqcookie' -p 15672:15672 -p  5672:5672 -p 25672:25672 rabbitmq:management
 
docker run -itd --name rabbit02 --hostname myrabbit02 -v /home/software/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=qyl-e RABBITMQ_DEFAULT_PASS=qyl-e RABBITMQ_ERLANG_cookie='rabbitmqcookie' --link rabbit01:myrabbit01 -p 15673:15672 -p  5673:5672 -p 25673:25672 rabbitmq:management
 
docker run -itd --name rabbit03 --hostname myrabbit03 -v /home/software/rabbitmqcluster/rabbitmq01:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=qyl-e RABBITMQ_DEFAULT_PASS=qyl-e RABBITMQ_ERLANG_cookie='rabbitmqcookie' --link rabbit01:myrabbit01  --link rabbit02:myrabbit02 -p 15674:15672 -p  5674:5672 -p 25674:25672 rabbitmq:management

 执行以下命令,进入第一个rabbitmq节点容器

docker exec -it rabbit01 /bin/bash

进入容器后,执行以下命令

    rabbitmqctl stop_app

    rabbitmqctl reset

    rabbitmqctl start_app

    exit

执行下面命令,进入第二个rabbitmq节点容器

docker exec -it rabbit02 /bin/bash

进入第二个容器后执行如下命令

    rabbitmqctl stop_app

    rabbitmqctl reset

    rabbitmqctl join_cluster --ram rabbit@myrabbit01

    rabbitmqctl start_app

    exit

同上面操作,进入第三个容器节点

最后获得下图

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号