![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息队列
六月的翅膀
人生本是无根草,醉了何必问家乡
展开
-
rabbitmq报错:PRECONDITION_FAILED - parameters for queue ‘test-1‘ in vhost ‘/‘ not equivalent
错误如下:[root@master2 rabbitmq-python]# python send-1.py Traceback (most recent call last): File "send-1.py", line 9, in <module> channel.queue_declare(queue='test-1') File "/usr/lib/python2.7/site-packages/pika/adapters/blocking_connection.原创 2020-09-07 19:13:10 · 1364 阅读 · 0 评论 -
RaabitMQ:rabbitmqctl的几个命令
rabbitmqctl update_cluster_nodes {clusternode}在集群中的节点应用启动前咨询clusternode节点的最新信息,并更新相应的集群信息。这个和join_cluster不同,它不加入集群。考虑这样一种情况,节点A和节点B都在集群中,当节点A离线了,节点C又和节点B组成了一个集群,然后节点B又离开了集群,当A醒来的时候,它会尝试联系节点B,但是这样会失败,因为节点B已经不在集群中了。rabbitmqctl update_cluster_nodes -n A C可以解转载 2020-09-07 17:32:47 · 560 阅读 · 0 评论 -
服务器安装三节点RabbitMQ集群(4)
<===服务器安装三节点Rabbit MQ集群(3)上一篇,在搭建好集群之后,直接reboot了节点1,然后就起不来了,应该是操作方法不对这一篇再整理一下1、加入集群首先,三个节点都各自安装好了RabbitMQ,选一个为簇节点。比如选节点1。下一步,将2、3加入集群每个要加入集群的节点的操作都相同,如下三个步骤:rabbitmqctl stop是停止应用和集群节点,而rabbitmqctl stop_app是只停应用,不停集群节点,所以千万记住停应用节点是通过命令rabbi原创 2020-09-07 15:50:27 · 590 阅读 · 0 评论 -
服务器安装三节点RabbitMQ集群(3)
<===服务器安装三节点RabbitMQ集群(2)镜像集群搭好了,我又要开始破坏了先reboot一下节点1,然后再start就不行了再看一下cebazi队列,跑到3节点了,说明3节点被选为master了Sep 04 16:17:00 master1 rabbitmqctl[24427]: {error_logger,{{2020,9,4},{16,17,0}},supervisor_report,[{supervisor,{local,net_sup}},{errorCon.原创 2020-09-07 10:37:06 · 255 阅读 · 0 评论 -
服务器安装三节点RabbitMQ集群(2)
普通模式:默认的集群模式,以两个节点(1、2)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点1(或者2),1和2两个节点仅有相同的元数据,即队列的结构。当消息进入1节点的Queue后,consumer从2节点消费时,RabbitMQ会临时在1、2间进行消息传输,把1中的消息实体取出并经过2发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连1或2,出口总在1,会产生瓶颈。当1节点故障后原创 2020-09-04 13:40:11 · 311 阅读 · 0 评论 -
服务器安装三节点RabbitMQ集群
首先准备三台服务器:我这里三个IP分别是99/106/119对应的hostname在之前安装KubeSphere的时候已经改好了为master1、master2、master3有些说免密登录的,没必要吧只要三台机器互相可以ping通,关闭防火墙、SELinux,就行RabbitMQ 基于Erlang实现的,所以在安装rabbitmq之前需要先安装erlang,安装的时候需要注意erlang的版本号与rabbitmq的版本号。安装注意:erlang版本号需要兼顾rabbitmq版本。版本.原创 2020-09-03 17:08:19 · 1150 阅读 · 0 评论 -
RabbitMQ单机瞎玩(2)
【<<==RabbitMQ单机瞎玩(1)】现在还剩下两个队列了,下面运行一下receive.py#!/usr/bin/env pythonimport pikaconnection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost'))channel = connection.channel()#channel.queue_declare(queue='hello')#这行去掉...原创 2020-09-02 17:22:43 · 288 阅读 · 0 评论 -
RabbitMq 持久化(转)
MQ默认建立的是临时 queue 和 exchange,如果不声明持久化,一旦 rabbitmq 挂掉,queue、exchange 将会全部丢失。所以我们一般在创建 queue 或者 exchange 的时候会声明 持久化。1.queue 声明持久化# 声明消息队列,消息将在这个队列传递,如不存在,则创建。durable = True 代表消息队列持久化存储,False 非持久化存储result = channel.queue_declare(queue = 'python-test',dur转载 2020-09-02 11:36:33 · 425 阅读 · 0 评论 -
Python实现RabbitMQ中6种消息模型(转)
RabbitMQ与Redis对比 RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些RabbitMQ的资料。相比于Redis,RabbitMQ优点很多,比如:具有消息消费确认机制 队列,消息,都可以选择是否持久化,粒度更小、更灵活。 可以实现负载均衡RabbitMQ应用场景异步处理:比如用户注册时的确认邮件、短信等交由rabbitMQ进行异步处理 应用解耦:比如收发消息双方可以使用转载 2020-09-02 11:04:09 · 514 阅读 · 0 评论 -
RabbitMQ安装FAQ(接前面一篇)
这里,之前在虚机装了一次,但是我换个云服务器,又是问题有小坑分析一下就是每台机器的源更新时间不同,导致默认软件版本差别下面就是我在云服务器的安装记录:先安装了erlang,没有指定版本,应该是版本比较老然后又安装rabbitmq,也没有指定版本后面又安装一个socat这样下来web界面无法登录于是下载了一个rpm包:rabbitmq-server-3.8.7-1.el7.noarchhttps://www.rabbitmq.com/install-rpm.html想着直接原创 2020-09-02 00:27:34 · 187 阅读 · 1 评论 -
RabbitMQ单机瞎玩(1)
这个玩意儿在实际生产环境中可以深刻学习,比如OpenStack集群,并发量也有,真实环境。但假如是单机,那...就玩玩吧,学习一下基本过程。Here we go!1、安装单机集群模式(单机模式就是玩玩,什么都做不了):前面已经记录过了,很简单https://blog.csdn.net/cd_yourheart/article/details/1082583172、熟悉一下Web界面[root@compute ~]# rabbitmqctl list_queuesListi原创 2020-09-01 18:02:11 · 170 阅读 · 0 评论 -
CentOS7安装单机版RabbitMQ集群
目前我已经安装了RabbitMQ,参见这里,在此基础上安装单机集群。单机集群搭建1 配置集群前,先确保第一次安装的rabbitmq服务关闭rabbitmqctl stop# 这里就是把我已经安装好了的RabbitMQ先停掉2 在一台服务器上启动3个节点的集群RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENA.转载 2020-08-27 14:06:38 · 168 阅读 · 0 评论 -
TCP的ACK原理和延迟确认机制
由于通信过程的不可靠性,传输的数据不可避免的会出现丢失、延迟、错误、重复等各种状况,TCP协议为解决这些问题设计了一系列机制。这个机制的核心,就是发送方向接收方发送数据后,接收方要向发送方发送ACK(回执)。如果发送方没接收到正确的ACK,就会重新发送数据直到接收到ACK为止。比如:发送方发送的数据序号是seq,那么接收方会发送seq + 1作为ACK,这样发送方就知道接下来要发送序号为seq + 1的数据给接收方了。 ...转载 2020-08-26 19:00:40 · 5256 阅读 · 0 评论 -
如何保证消息队列的高可用
RabbitMQRabbitMQ有三种模式:单机模式,普通集群模式,镜像集群模式(1)单机模式单机模式平常使用在开发或者本地测试场景,一般就是测试是不是能够正确的处理消息,生产上基本没人去用单机模式,风险很大。(2)普通集群模式普通集群模式就是启动多个RabbitMQ实例。在你创建的queue,只会放在一个rabbtimq实例上,但是每个实例都同步queue的元数据。在消费的时候完了,上如果连接到了另外一个实例,那么那个实例会从queue所在实例上拉取数据过来。这种方式确实很麻烦,也转载 2020-08-26 17:07:02 · 106 阅读 · 0 评论 -
RabbitMQ集群并处理失败
RabbitMQ集群让rabbitmq变成高可用性的2种方法:设置rabbit集群 扩展程序的规模以提升性能rabbitmq 内建集群的设计用于完成2个目标:允许消费者和生产者在rabbit集群节点崩溃的情况下继续运行 通过添加更多的节点来线性扩展消息通信吞吐量rabbitmq通过Erlang 提供的开放电信平台(Open Telecom Platform,OTP)分布式通信框架来巧妙的解决上面2个问题。当你失去一个rabbit节点,同时客户端能够重新连接到集群中的任意其他节点并继续转载 2020-08-26 14:18:27 · 471 阅读 · 0 评论 -
RabbitMQ工作原理
RabbitMQ是一个开源的消息代理软件。它接收生产者发布的消息并发送给消费者。它扮演中间商的角色,可以用来降低web服务器因发送消息带来的负载以及延时。RabbitMQ如何工作的?我们来简单看看RabbitMQ是如何工作的。首先来看看RabbitMQ里的几个重要概念:生产者(Producer):发送消息的应用。 消费者(Consumer):接收消息的应用。 队列(Queue):存储消息的缓存。 消息(Message):由生产者通过RabbitMQ发送给消费者的信息。 连接(Connec转载 2020-08-25 22:33:37 · 1594 阅读 · 0 评论 -
OpenStack Nova核心组件和RabbitMQ通信流程分析
前言云计算从资源提供类型可以分为IaaS(基础设施即服务)PaaS(平台即服务)和SaaS(软件即服务)三层。IaaS和PaaS相辅相成,目前云计算商业领域的各大公有云厂商一般都会提供IaaS和PaaS层的资源和服务,比如AWS、Azure、GCP(GoogleCloud Platform)、IBM Cloud、阿里云、腾讯云、百度云、金山云、华为云等。IaaS厂商一般提供计算、存储和网络等基础资源,PaaS厂商一般面向开发者提供中间件、容器编排、应用部署等资源服务。在开源领域,转载 2020-08-25 15:19:36 · 859 阅读 · 0 评论 -
为什么openstack要用rabbitmq这类消息中间件来进行RPC这类的操作呢,直接rpc不行吗?
标题是别人提到问题,下面是两个回答。不一定正确,可以辅助理解先来看一下什么是RPC:RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用。RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题。那什么是分布式系统的通信透明性问题?这个问题就是指分布式系统间的相互调用其实是基本进程间的显式消息交换,然而,消息的发送和接收过程无法隐藏。而通信的隐藏对于分布式中实现访问的透明性是极为重要的。试想一下比如你要想查看一个订单详情,然后订单系统部署了三台机器。假转载 2020-08-25 14:34:15 · 372 阅读 · 0 评论 -
CentOS安装RabbitMQ
1、首先安装Erlangyum install erlang# 需要epel源想安装指定版本的话可以去官网下载:https://www.erlang-solutions.com/resources/download.html2、安装RabbitMQyum install rabbitmq-server3、设置# 开机启动[root@node1 ~]# systemctl enable rabbitmq-server.service# 启动[root@node1 ~]#原创 2020-08-25 13:57:02 · 129 阅读 · 0 评论 -
RabbitMQ集群故障恢复详解
RabbitMQ的mirror queue(镜像队列)机制是最简单的队列HA(High Available高可用)方案,它通过在cluster的基础上增加ha-mode、ha-param等policy选项,可以根据需求将cluster中的队列镜像到多个节点上,从而实现高可用,消除cluster模式中队列内容单点带来的风险。高可用最关键的策略是消除单点故障。几点注意事项在使用镜像队列之前,有几点注意事项必须熟记于心(下文中将混用主节点和master,从节点和slave):1. .转载 2020-08-25 10:06:25 · 1521 阅读 · 0 评论 -
消息队列常见的 5 个应用场景
消息队列常见的 5 个应用场景javajavascript消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景。1、异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种:.转载 2020-08-25 09:38:28 · 976 阅读 · 0 评论 -
为什么要使用消息队列
下面这段话来自VMWare的网站,个人觉得关于消息队列的作用的概括简明扼要,遂摘录至此:现代的互联网应用大量地使用了消息队列(Messaging)。消息队列不仅被用于系统内部组件之间的通信,同时也被用于系统跟其它服务之间的交互。消息队列的使用可以增加系统的可扩展性、灵活性和用户体验。非基于消息队列的系统,其运行速度取决于系统中最慢的组件的速度(注:短板效应)。而基于消息队列可以将系统中各组件解除耦合,这样系统就不再受最慢组件的束缚,各组件可以异步运行从而得以更快的速度完成各自的工作。刚知道原来虎扑网也转载 2020-08-24 20:15:20 · 188 阅读 · 0 评论