RabbitMQ
文章平均质量分 55
记录学习与实验内容。
Energet!c
这个作者很懒,什么都没留下…
展开
-
RabbitMQ内存监控及自动重启的shell脚本
RabbitMQ内存监控及自动重启的shell脚本原创 2023-04-19 17:44:07 · 931 阅读 · 0 评论 -
RabbitMQ Bad characters in cookie
RabbitMQ Bad characters in cookie原创 2022-09-08 17:25:57 · 630 阅读 · 2 评论 -
RabbitMQ指标收集插件(rabbitmq-exporter)配置文件
执行命令./rabbitmq_exporter -config-file config.example.json &config.example.json{ "rabbit_url": "http://127.0.0.1:15672", "rabbit_user": "guest", "rabbit_pass": "guest", "publish_port": "9419", "publish_addr": "", "output_forma原创 2021-10-06 15:57:13 · 756 阅读 · 0 评论 -
rabbitmq中的mnesia是什么
Mnesia 是一个分布式数据库,RabbitMQ 使用它来存储有关用户、交换器、队列和绑定的信息。 但是,消息不存储在数据库中。原创 2021-09-23 11:59:21 · 1800 阅读 · 0 评论 -
RabbitMQ压力测试之perf-test
一、Perf-Test介绍perf-test是基于java客户端的可模拟基本工作负载的工具,有额外的工具可以输出成HTML图形,它能够对RabbitMQ单节点和集群进行性能测试。二、Perf-Test安装1.下载地址:https://github.com/rabbitmq/rabbitmq-perf-test/releasesLinux平台-二进制包rabbitmq-perf-test-2.15.0-bin.tar.gzWindows平台-zip压缩包perf-test_l原创 2021-07-14 15:47:46 · 3617 阅读 · 0 评论 -
记服务器更改地址后RabbitMQ无法启动的问题
现象:[root@node02 ~]# systemctl status rabbitmq-server ● rabbitmq-server.service - RabbitMQ broker Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled) Active: deactivating (stop) (Result: exit-code) sinc原创 2021-06-03 16:28:08 · 963 阅读 · 0 评论 -
centos搭建3个节点的最新版本RabbitMQ集群
一、CentOS环境准备工作VMware安装一台虚拟机,克隆两台。地址分配如下:名称地址node01(主)192.168.0.200node02192.168.0.201node03192.168.0.2021、修改主机名[root@node01 rabbitmq]# hostnamenode01[root@node01 rabbitmq]#[root@node02 rabbitmq]# hostnamenode02[root@node02 ra原创 2021-04-03 21:27:08 · 649 阅读 · 0 评论 -
CentOS搭建最新版Prometheus将RabbitMQ集群指标exporter到Prometheus
RabbitMQ集群搭建方法请参阅:https://blog.csdn.net/qq_32014795/article/details/115420326?spm=1001.2014.3001.5501一、准备工作1、软件包下载prometheushttps://prometheus.io/download/RabbitMQhttps://github.com/kbudde/rabbitmq_exporter/releases2、SecureFX上传服务器[root@node01 pr原创 2021-04-04 02:57:30 · 1028 阅读 · 0 评论 -
Prometheus + Grafana之Grafana安装与添加数据源
一、准备工作1、centos搭建3个节点的最新版本RabbitMQ集群2、CentOS搭建最新版Prometheus将RabbitMQ集群指标exporter到Prometheus二、下载grafana下载地址:https://grafana.com/grafana/downloadCentOS对应包wget https://dl.grafana.com/oss/release/grafana-7.5.2.linux-amd64.tar.gz三、安装grafana1、yum安装[ro原创 2021-04-04 13:15:51 · 3213 阅读 · 0 评论 -
RabbitMQ是什么
1、什么是消息中间件消息队列中间件是指利用高效可靠的消息传递机制进行与平台无关的数据交流,基于数据通信来进行分布式系统的集成。2、有哪些开源的消息中间件RabbitMQ、Kafka、ActiveMQ、RocketMQ3、相比远程调用优点在哪发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,合适时机转发给接受者。能在不同平台之间通信,常常用来屏蔽各种平台及协议之间的特性,实现应用程序之间的协同,优点能够在客户和服务器之间提供同步和异步的连接,并且任何时刻都可以将消息进行传送存储和转发原创 2021-04-07 10:14:42 · 89 阅读 · 0 评论 -
RabbitMQ入门
1、生产者与消费者Producer:生产者就是投递消息的一方。消息包含两个部分:消息体(payload)和标签(label)。Consumer:消费者就是接收消息的一方。消费者连接到RabbitMQ服务器,订阅到队列上。当消费者消费一条消息时,只是消费消息的消息体(payload)。Broker:消息中间件的服务节点。大多数情况下可以将RabbitMQ Broker看作一台RabbitMQ 服务器。2、队列queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息原创 2021-04-07 11:39:51 · 119 阅读 · 0 评论 -
RabbitMQ之mandatory和immediate介绍
1、概述mandatory和immediate是AMQP协议的中basic.publish方法中的两个标识位,他们都有当消息传递过程中不可到达目的时返回给生产者的功能。2、mandatory当mandatory标志位设置为true时,如果交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ会调用Basic.Return命令将消息返回给生产者。当mandatory设置为false时,出现上述情况,新消息直接被丢弃。3、immediate当immediate参数设置为true时原创 2021-04-08 11:25:24 · 366 阅读 · 0 评论 -
RabbitMQ 备份交换器
备份交换器英文名字 Alternate Exchange,简称AE,备胎交换器。生产者在发送消息的时候如果不设置mandatory参数,那么消息在未被路由的情况下将会丢失;如果设置了mandatory参数,那么需要添加ReturnListener的编程逻辑,生产者的代码将变得复杂。如果既不想复杂化生产者的编程逻辑,又不想消息丢失, 那么可以使用备份交换器,这样可以讲未被路由的消息存储在RabbitMQ中,在需要的时候去处理这些消息。...原创 2021-04-08 11:32:41 · 95 阅读 · 0 评论 -
RabbitMQ 过期时间(TTL)
1、概述TTL,Time to Live的简称,过期时间。2、设置TTL目前两种方法可以设置消息的TTL。第一种方法就是通过队列属性设置,队列中所有当消息都有相同的过期时间。第二种方法是对消息本身进行单独设置,每条消息的TTL可以不同。如果两种方法一起使用,则消息的TTL以两者之间较小的那个数值为准。消息队列中的生存时间一旦超过设置的TTL值,就会变成“死信”。(1)设置消息的TTL针对每条消息设置TTL的方法是在basic.publish方法中加入expiration的属性参数,单位为ms.①原创 2021-04-08 13:33:01 · 760 阅读 · 0 评论 -
RabbitMQ 死信队列
概述DLX全称Dead-Letter-Exchange,可以称之为私信交换器,死信邮箱。当小东西在一个队列中变成死信后,它能被重新被发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称之为死信队列。DLX也是一个正常的交换器,和一般交换器一样没有区别,他能在任何队列上被指定,实际上就是设置某个队列的属性。当这个队列中存在死信时,RabbitMQ就会自动地将这个消息重新发布到设置的DLX上去,进而被路由到另一个队列,即死信队列。可以监听这个队列中的消息以进行处理,这个特性与将消息TTL设置为原创 2021-04-08 13:45:05 · 89 阅读 · 0 评论 -
RabbitMQ 延迟队列
概述延迟队列存储的对象就是对应的延迟消息,所谓“延迟消息”是指当消息被发送后,并不想让消费者立刻拿到消息,而是等待特定时间后消费者才能拿到这个消息进行消费。在AMQP协议中,或则RabbitMQ本身没有直接支持延迟队列功能,但是可以通过DLX和TTL模拟出延迟队列的功能。延迟队列使用场景订单系统,一个用户下单之后通常有30分钟的时间进行支付,如果30分钟之内没有支付成功,那么这个订单将进行异常处理,这个时候就可以使用延迟队列来初亏这些订单。用户希望通过手机远程遥控家里的智能设备在指定的时间进行工原创 2021-04-08 13:55:46 · 49 阅读 · 0 评论 -
RabbitMQ 优先级队列
概述优先级队列:具有高优先级的队列具有最高的优先权,优先级高的队列具备优先被消费的特权。e.g.当然,在消费端速度大于生产端速度,且broker中没有消息堆积的话,对发送的消息设置优先级也没什么实际意义,因为发送端刚发送完一条消息就被消费端消费了,那么就相当于broker至多只有一条消息,那么对于单条消息来说优先级是没有什么意义的。...原创 2021-04-08 14:20:49 · 74 阅读 · 0 评论 -
RabbitMQ RPC
概述RPC,Remote Procedure Call的简称,远程过程调用。他是一种通过网络从远程计算机上请求服务,而不需要了解底层网络的技术。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署原创 2021-04-08 14:36:28 · 99 阅读 · 0 评论 -
RabbitMQ 持久化
RabbitMQ的持久化分为:交换器的持久化。队列的持久化和消息的持久化。交换器的持久化通过在声明队列是将durable参数配置为true实现的。如果交换器不设置持久化,那么RabbitMQ服务重启之后,相关的交换器元数据会丢失,不过消息不会丢失,只是不能将消息发送到这个交换器中了。对于一个长期使用的交换器来说,建议将其置为持久化。队列的持久化通过在声明队列时将durable参数置为true实现的,如果队列不设置持久化,那么在RabbitMQ服务重启之后,相关队列的元数据会丢失,此时数据也会丢失。原创 2021-04-08 15:03:37 · 377 阅读 · 0 评论 -
RabbitMQ 生产者确认(待深入)
在使用RabbitMQ的时候,可以通过消息持久化操作来解决因为服务器的异常崩溃二导致的消息丢失,除此之外,当消息的生产者将消息发送出去之后,消息到底有没有正确地到达服务器?默认情况下发送信息的操作是不返回给生产者任何信息的,也就是默认情况下生产者是不知道消息有没有正确到达服务器。RabbitMQ针对如果在消息到达服务器之前已经丢失这个问题提供了两种解决方案。通过事务机制通过发送方确认机制事务机制RabbitMQ与事务相关的方法:channel.txSelect(): 将当前信道设置成事务模式原创 2021-04-08 15:31:40 · 143 阅读 · 0 评论 -
RabbitMQ管理
一、多租户与权限概述每一个RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机,简称vhost。每一个vhost本质上都是一个独立的小型RabbitMQ服务器,拥有自己独立的队列、交换器及绑定关系,它拥有自己独立的权限。vhost就像是虚拟机与物理服务器一样,各个实例见提供逻辑上的分离,为不同程序安全保密地运行数据,它既能将同一个RabbitMQ中的众多用户区分开,又可以避免队列和交换器等命名冲突。vhost之间是绝对隔离的,无法将vhost1中的交换器与vhost2中的队列进行绑定,这样原创 2021-04-09 11:55:19 · 1779 阅读 · 0 评论 -
RabbitMQ配置
一、概述可以使用默认的内建配置来有效地运行RabbitMQ,并且大多数情况下也不需要修改任何RabbitMQ的配置。为了更加有效的操控RabbitMQ,可以利用调节系统范围内的参数来达到定制化的需求。二、环境变量RabbitMQ的环境变量都是以“RABBITMQ_“开头的,可以在shell环境中设置,也可以在rabbitmq-env.conf这个RabbitMQ环境变量的定义文件中设置。如果是在非shell环境中配置,则需要去掉”RabbitMQ_“这个前缀。优先级按照shell环境最优先,其次是ra原创 2021-04-09 15:28:17 · 755 阅读 · 0 评论 -
使用Docker启动RabbitMQ集群
一、准备工作CentOS安装DockerCentOS网络配置云服务器最好,无需担心网络问题;虚拟机可以使用桥接物理网卡设置,网卡DHCP获取地址,设置DNS后可以上网。加速配置这里使用阿里云加速点击跳转登录。sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://填写你的加速度地址"]}EOFsudo systemctl daemo原创 2021-04-10 14:52:03 · 564 阅读 · 0 评论 -
RabbitMQ运维之集群搭建
概述单机、单节点运行RabbitMQ服务,无法满足真实应用的需求,比如,遇到RabbitMQ内存崩溃、掉电等等问题。因此搭建一个RabbitMQ集群才是解决问题的关键。RabbitMQ集群允许消费者和生产者在RabbitMQ单个节点崩溃的情况下继续运行,他可以通过添加更多的节点来线性地扩展消息通信的吞吐量。RabbitMQ集群中的所有节点都会备份所有的元数据信息,有:队列元数据:队列的名称及属性交换器:交换器的名称和属性绑定关系元数据:交换机与队列或则交换器与交换器之间的绑定关系vhost元原创 2021-04-12 18:27:31 · 1330 阅读 · 0 评论 -
RabbitMQ问题记录
RabbitMQ遭遇断电,Docker故障崩溃等原因,重新启动集群时节点不加入集群重新join集群RabbitMQ集群节点升级,Mnesia数据存储位置在哪,配置文件在何处新建配置文件 rabbitmq-env.conf、rabbitmq.conf添加之后配置文件错误导致3Docker中对RabbitMQ修改配置文件导致容器无法启动关于日志文件较大https://www.rabbitmq.com/logging.html rotate_logsInstructs the Rabb.原创 2021-04-13 16:23:46 · 114 阅读 · 0 评论 -
RabbitMQ忘记guest/admin 密码
1、忘记密码更改密码[root@node02 ~]# rabbitmqctl change_password guest guestChanging password for user "guest" ...[root@node02 ~]# 设置用户为超级管理员[root@node02 ~]# rabbitmqctl set_user_tags guest administratorSetting tags for user "guest" to [administrator] ..原创 2021-04-14 16:47:51 · 3432 阅读 · 0 评论 -
RabbitMQ之Federation配置
一、Federation介绍federation 插件的最终目标是,在不同 broker 之间进行消息传递而无需建立集群二、Federation特点1、松耦合性(Loose coupling)federation 插件能够在分属不同管理域的 broker 或 cluster 之间传递消息:他们可能设置了不同的 user 和 vhost ;他们可能运行在不同版本的 RabbitMQ 和 Erlang 上;2、WAN 友好性(WAN-friendly)federation 插件基于 AMQ原创 2021-04-14 18:23:04 · 663 阅读 · 0 评论 -
RabbitMQ之Shovel配置(python模拟Producer、Consumer)
一、ShovelShovel能够可靠、持续地从一个Broker中的队列(source端)拉取数据并转发至另一个Broker(destination)。这个过程中Shovel就是一个客户端,它负责连接源节点,读取某个队列的消息,然后将消息写入到目标节点中。二、Shovel的优势松耦合。Shovel可以移动位于不同管理域中的Broker上的消息,这些Broker可以包含不同的用户和vhost,也可以是使用不同的RabbitMQ和Erlang版本。支持广域网。Shovel插件同样基于AMQP协议在Bro原创 2021-04-15 18:04:01 · 760 阅读 · 0 评论 -
RabbitMQ存储机制
本文转载自朱小厮专家的博客https://hiddenpps.blog.csdn.net/article/details/77987216仅供个人学习参考收藏,如有侵犯利益秒删。RabbitMQ从3.6.0版本开始引入了惰性队列(Lazy Queue)的概念。惰性队列会尽可能的将消息存入磁盘中,而在消费者消费到相应的消息时才会被加载到内存中,它的一个重要的设计目标是能够支持更长的队列,即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消转载 2021-04-20 11:37:08 · 758 阅读 · 0 评论 -
RabbitMQ内存及磁盘告警
概述当内存使用超过配置的阈值或者磁盘剩余空间地狱配置的阈值时,RabbitMQ都会暂时阻塞(block)客户端的连接并停止接收客户端发来的消息,以此避免服务崩溃。于此同时,客户端与服务端的心跳检测也会失效,可以通过rabbitmqctl list_connections命令查看,web也可。内存告警默认情况下vm_memory_high_watermark的值为0.4,即内存阈值为0.4,表示当RabbitMQ使用内存的阈值设置为40%就会产生内存警告并阻塞所有生产者的链接。一旦告警被解除,一切都会恢原创 2021-04-20 14:08:55 · 994 阅读 · 0 评论 -
RabbitMQ流控
概述RabbitMQ可以对内存和磁盘使用量这只阈值,当达到阈值的时候,生产者将被阻塞。除了这两个阈值,在v2.8.0之后版本开始,引入了流控机制来确保稳定性。流控机制是**用来避免消息发送速率过快导致服务器难以支撑的情形。**内存和磁盘告警相当于是全局流控,一旦触发阻塞,集群中所有的connection都被阻塞。而流控是针对单个connection,称为Per-Connection Flow Control。流控的原理Erlang进程之间不共享内存,而是通过消息传递来通信,每个进程都有自己的进程邮箱m原创 2021-04-21 14:31:30 · 564 阅读 · 0 评论 -
RabbitMQ网络分区
概述网络分区是在使用RabbitMQ时不得不面对的问题,网络分区的发生可能会引起消息丢失或者服务不可用。网络分区:集群会分成两个部分或者更多部分,各自为政,互相都认为对方分区已经挂了,包括队列、交换器及绑定等元数据的创建和销毁都处于自己的分区内,与其他分区无关。RabbitMQ集群的网络分区容错性不是很高,在广域网中一般都是使用Federation和Shovel插件解决。在局域网的环境中,网络分区是不可避免的。网络分区的判定RabbitMQ集群节点内部通信端口默认为25672,两两节点之间都会有信原创 2021-04-22 17:38:43 · 1574 阅读 · 0 评论 -
RabbitMQ之负载均衡
概述如果一个集群中有3个节点,那么所有的客户端都与其中的单个节点node01简历tcp连接,那么node01的网络负载必然会大大增加而显得难以承受,其他节点又由于没有那么多的负载而造成硬件资源浪费,所以负载均衡尤为重要。客户端与集群建立的TCP连接不是与集群中所有的节点建立连接,而是挑选其中一个节点建立连接。引入负载均衡之后,各个客户端的连接就可以分摊到集群的各个节点之中。负载均衡(load balance)是一种计算机网络技术,用于在多个计算机、网络连接、CPU、磁盘驱动器或则其他资源中分配负载,原创 2021-04-24 17:20:17 · 4036 阅读 · 0 评论 -
Windows下RabbitMQ的安装
一、 下载Erlang点此进入Erlang下载界面为了避免不必要的意外发生推荐下载Erlang和RabbitMQ相匹配的版本。点此查看对应的版本。二、安装Erlang下载后双击运行,需要安装vc++依赖请安装。安装时牢记安装目录三、设置环境变量右击“此电脑”-“高级系统设置”-“环境变量”cmd输入erl查看四、下载RabbitMQ点此进入RabbitMQ下载地址五、安装RabbitMQ双击安装即可,选择适当位置。六、安装后的操作启动插件cmd进入安装目录下的sbin目原创 2021-06-02 17:19:42 · 95 阅读 · 0 评论