随笔分类 - RabbitMQ
RabbitMQ
摘要:一、基本原理 1. 工作原理 搭建 RabbitMQ 集群以后,尽管交换器和绑定关系能够在单点故障问题上幸免于难,但是队列及其存储的消息却不行,这是因为队列进程及其内容仅仅维持在单个节点之上,所以一个节点的失效表现为其对应的队列不可用。 引入镜像队列(Mirror Queue)的机制,可以将队列镜像
阅读全文
摘要:一、消息存储机制 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。持久化的消息在到达队列时就被写入到磁盘,非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。这两种类型的消息的落盘处理都在 RabbitMQ 的“持久层”中完成。 持久层是一个逻辑上的概念,实际
阅读全文
摘要:RabbitMQ 可以通过 3 种方式实现分布式部署:集群、Federation 和 Shovel。这 3 种方式不是互斥的,可以根据需要选择其中的一种或者以几种方式的组合来达到分布式部署的目的。Federation 和 Shovel 可以为 RabbitMQ 的分布式部署提供更高的灵活性,但同时也
阅读全文
摘要:一、插件管理 RabbitMQ 提供了很多的插件,默认存放在 $RABBITMQ_HOME/plugins 目录下。 1. rabbitmq-plugins 语法 rabbitmq-plugins [-n node] {command} [command options...] 2. 启动插件 ra
阅读全文
摘要:一、集群迁移 RabbitMQ 中的集群迁移更多的是用来解决集群故障不可短时间内修复而将所有的数据、客户端连接等迁移到新的集群中,以确保服务的可用性。迁移过程包括元数据重建、数据迁移,以及与客户端连接的切换。 1. 元数据重建 元数据重建是指在新的集群中创建原集群的队列、交换器、绑定关系、vhost
阅读全文
摘要:一、集群搭建 RabbitMQ 集群对延迟非常敏感,应当只在本地局域网内使用。在广域网中不应该使用集群,而应该使用 Federation 或者 Shovel 来代替。 1. 安装 RabbitMQ 在各个节点正确安装 RabbitMQ。安装过程参考:https://www.cnblogs.com/w
阅读全文
摘要:一、持久化 持久化可以提高 RabbitMQ 的可靠性,以防在异常情况(重启、关闭、宕机等)下的数据丢失。 RabbitMQ 的持久化分为三个部分:交换器的持久化、队列的持久化和消息的持久化。 1. 交换器持久化 交换器的持久化是通过在声明交换器时将 durable 参数置为 true 实现的: c
阅读全文
摘要:RPC,是 Remote Procedure Call 的简称,即远程过程调用。它是一种通过网络从远程计算机上请求服务,而不需要了解底层网络的技术。RPC 的主要功用是让构建分布式计算更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 一般在 RabbitMQ 中进行 RPC 是很简单的
阅读全文
摘要:一、mandatory 和 immediate 生产者发送消息的方法 Channel.Publish() 各个参数解析如下: err := ch.Publish( "helloEx", //exchange:源交换器名称,如果设置为空字符串,则消息会被发送到RabbitMQ默认的交换器中。 "hel
阅读全文
摘要:一、安装 go-amqp 库 go get github.com/streadway/amqp 二、连接 RabbitMQ 一个 Connection 可以用来创建多个 Channel 实例,但是 Channel 实例不能在线程间共享,应用程序应该为每一个线程开辟一个 Channel。 多线程间共享
阅读全文
摘要:一、消息中间件 1. 何为消息中间件 消息队列中间件:Message Queue Middleware,简称MQ,是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 消息队列中间件一般有
阅读全文