文章分类 - 消息队列_rabbitmq
摘要:如何保证kafka的高容错性? producer不使用批量接口,并采用同步模型持久化消息。 consumer不采用批量化,每消费一次就更新offset RabbitMqKafka producer容错,是否会丢数据 有ack模型,也有事务模型,保证至少不会丢数据。ack模型可能会有重复消息,事务模型
阅读全文
摘要:普通模式: 默认的集群模式,以两个节点(rabbit1、rabbit2)为例说明。消息实体只存在其中一个节点 rabbit1 或者 rabbit2,rabbit1 和 rabbit2 两个节点仅有相同的元数据,就是队列的结构。当消息进入 rabbit1 节点的队列(Queue)后,当消费者从 rab
阅读全文
摘要:RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯。 RabbitMQ解决分布式事务原理:采用最终一致性原理。 需要保证以下三要素 1、确认生产者一定要将数据投
阅读全文
摘要:https://blog.csdn.net/kikajack/article/details/107099518
阅读全文
摘要:问题一:RabbitMQ 中的 broker 是指什么?cluster 又是指什么? 答:broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用 程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。
阅读全文
摘要:using php-amqplib 在第二节教程中,我们知道了怎样使用工作队列将耗时的任务分发给多个消费者。 但是,如果我们需要在远程计算机上运行并等待结果怎么办?那样就是一个新的应用场景。这种模式通常称为远程调用或者叫 PRC。 在本教程中,我们将使用RabbitMQ构建一个RPC系统:一个客户端
阅读全文
摘要:fanout交换器 会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,此时生产者投递消息时不需要指定route。 也就是说用fanout交换器发送消息的生产者,会将消息发送到所有与该交换器绑定的队列上。(通过交换器名识别) 示例代码 publisher.php <?php date_de
阅读全文
摘要:多个生产者,一消费者 publisher.php路由key为why.one publisher1.php路由key为why.two consumer.php的交换机类型为topic,绑定路由模式为why.*(*是匹配1个单词,#是匹配多个单词) publisher.php <?php date_de
阅读全文
摘要:RabbitMQ有四种Exchange类型,分别是Direct 、Fanout 、Topic、Headers 这四种累的exchange分别有以下一些属性,分别是: name:名称 Durability:持久化标志,如果为true,则表明此exchange是持久化的。 Auto-delete:删除标
阅读全文
摘要:https://www.jianshu.com/p/44e7f0c47001
阅读全文
摘要:简介 为提高系统高可用,生产者在发送message需要通过MQ回复ACK来确保message被成功存储。 RabbitMQ官网对Publisher Confirms有相关介绍,可惜example代码没有php版本的,且php-amqplib也是一帮志愿者在维护,精力有限,没有完整的使用example
阅读全文
摘要:概述 消息中间件有很多种,进程也会拿几个来对比对比,其中一种对比项就是消费模式。消息的消费模式分Push、Pull两种,或者两者兼具。RabbitMQ的消费模式就是兼具Push和Pull。push 模式主要是通过channel.basicConsume实现 本文通过demo代码以及借助wiresha
阅读全文
摘要:概述 在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达broker代理服务器呢?如果不进行特殊配置的话,默认情况下发布操作是不会返回任何信息给生产者的,也就是默认
阅读全文
摘要:保障消息的可靠性消费主要有以下两个方面到内容 消息在被消费端正确消费之前,不能删除 消息在被消费端正确消费之后,必须要删除,否则消息会被重复消费 什么叫正确消费 消费端 消费消息可以简单看成两个过程 接收消息 消费消息 接收到消息后,是不能当作正确消费的,只有当消息被业务处理完成之后,才能看作正确消
阅读全文
摘要:默认情况下,消息发送端发送消息给 RabbitMQ 后,RabbitMQ 是不会返回任何信息的。 那么我们怎么知道消息是中途丢失了还是到达了 broker 呢? RabbitMQ 提供了两种确认消息是否投递成功的方法 设置 channel 为 transaction 模式,通过 AMQP 事务机制实
阅读全文
摘要:默认情况下,exchange、queue、message 等数据都是存储在内存中的,这意味着如果 RabbitMQ 重启、关闭、宕机时所有的信息都将丢失。 RabbitMQ 提供了持久化来解决这个问题,持久化后,如果 RabbitMQ 发送 重启、关闭、宕机,下次起到时 RabbitMQ 会从硬盘中
阅读全文
摘要:RabbitMQ是一款使用Erlang开发的开源消息队列。本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议先从官网的 RabbitMQ Tutorials 入门教程开始学习。 本文将会讲解如何使用RabbitMQ实现延时重试和失败消息队列,实现可
阅读全文
摘要:之前的文章已经介绍RabbitMQ以及安装,本文就介绍PHP使用RabbitMQ的示例。 安装PHP的RabbitMQ扩展 本文介绍AMQP 0-9-1,这是一个开放的、通用的协议消息,这里我们使用php-amqplib这个PHP扩展。更多PHPAMQP扩展见官网。 通过composer安装 com
阅读全文
摘要:原文地址 http://soft.dog/2016/04/20/RabbitMQ-cli-rabbitmqadmin/ 一、前言 RabbitMQ 是一个使用 Erlang 编写的开源消息队列中间件,被广泛使用在各种应用场景中 一般对于它的监控和管理可以通过web来完成,详细可以参考 RabbitM
阅读全文