跳至主内容

使用 RabbitMQ 实现分布式信号量

·8 分钟阅读
Álvaro Videla

在这篇博文中,我们将解决在分布式系统中控制对特定资源的访问的问题。解决这个问题的方法在计算机科学中是众所周知的,它被称为信号量(Semaphore),由 Dijkstra 在 1965 年的论文“Cooperating Sequential Processes”中发明。我们将看到如何使用 AMQP 的构建块(如消费者、生产者和队列)来实现它。

使用 RabbitMQ 防止无界缓冲区

·9 分钟阅读
Álvaro Videla

我们架构中的不同服务在运行过程中需要一定量的资源,无论是 CPU、RAM 还是磁盘空间,我们都需要确保有足够的资源。如果我们不对服务器将要使用的资源数量设置限制,迟早会遇到麻烦。当数据库耗尽文件系统空间、媒体存储填满图片且从不转移它们,或者 JVM 耗尽 RAM 时,就会发生这种情况。即使是备份解决方案,如果不设置过期/删除旧备份的策略,也会成为一个问题。嗯,队列也不例外。我们必须确保我们的应用程序不会让队列无休止地增长。我们需要有某种策略来删除/驱逐/迁移旧消息。

消费者优先级与 RabbitMQ

·阅读时长4分钟
Álvaro Videla

在 RabbitMQ 3.2.0 中,我们引入了 消费者优先级,顾名思义,它允许我们为消费者设置优先级。这让我们能够在一定程度上控制 RabbitMQ 如何将消息传递给消费者,以实现对应用程序有益的另一种调度方式。

您会在什么时候在代码中使用消费者优先级?

使用 Elixir 编写 RabbitMQ 插件

·9 分钟阅读
Álvaro Videla

RabbitMQ 是一个非常可扩展的消息代理,允许用户通过编写插件来扩展服务器的功能。许多代理功能甚至作为插件随代理一起安装:例如,管理插件STOMP 支持。虽然这很酷,但插件必须用 Erlang 编写有时会成为一种挑战。我决定看看是否可以用另一种针对 Erlang 虚拟机 (EVM) 的语言编写插件,在这篇文章中我将分享我的进展。

RabbitMQ 3.0 搞砸了一些东西

·6 分钟阅读
Simon MacMullen

RabbitMQ 包含许多很棒的新功能。但为了实现其中的一些功能,我们需要改变一些东西。所以在这篇博文中,我将列出其中一些内容,以防您需要对它们进行任何操作。

MQTT 适配器

·5 分钟阅读
Emile Joubert

我为 RabbitMQ 编写了一个插件,它增加了对 MQTT 3.1 协议的支持。MQ Telemetry Transport 是一种轻量级的 PUB/SUB 协议,专为资源受限的设备和带宽有限的情况而设计,因此非常适合传感器和移动设备。该实现是一个协议适配器插件,允许 MQTT 客户端同时连接到 RabbitMQ 代理和其他协议的客户端。我们鼓励那些需要将低开销协议与健壮、可扩展、高可靠性和企业级功能的代理相结合的项目考虑此选项。

Jason 和 Alvaro 的优秀 Rabbit 书籍

·阅读时长4分钟
Alexis Richardson

在 Rabbit HQ,我们一直在阅读《RabbitMQ in Action》,这是一本关于 RabbitMQ 和消息传递的入门书籍。这本书是 Manning 系列的一部分,由 Jason WilliamsAlvaro Videla 撰写,他们都以对 Rabbit 社区的许多贡献而闻名。

今天,我们想感谢 Jason 和 Alvaro。谢谢 Jason 和 Alvaro!你们做得非常出色,无限量的啤酒由我们请客。

还有更多…… Manning 慷慨地为本博客的读者提供了 37% 的促销折扣。所有详情都在下面,由 Jason Williams 本人撰写的客座博文中……

© . This site is unofficial and not affiliated with VMware.