RabbitMQ 3.3 的破坏性变更
什么?又一篇“破坏性变更”的文章?是的,但希望这次比上次容易处理。不过 RabbitMQ 3.3.0 中有足够多的轻微不兼容的变更,值得在此列出。
什么?又一篇“破坏性变更”的文章?是的,但希望这次比上次容易处理。不过 RabbitMQ 3.3.0 中有足够多的轻微不兼容的变更,值得在此列出。
在这篇博文中,我们将讨论在分布式系统中控制对特定资源的访问的问题。解决这个问题的方法在计算机科学中是众所周知的,它被称为信号量,由 Dijkstra 在 1965 年在他的论文“合作顺序进程”中发明。我们将看到如何使用 AMQP 的构建块(如消费者、生产者和队列)来实现它。
我们架构中不同的服务将需要一定数量的资源来运行,无论是 CPU、RAM 还是磁盘空间,我们都需要确保我们有足够的资源。如果我们不对服务器将要使用的资源数量进行限制,那么在某个时候我们会遇到麻烦。如果您的数据库耗尽文件系统空间,您的媒体存储空间被图像填满并且从不将它们移动到其他地方,或者您的 JVM 耗尽 RAM,就会发生这种情况。如果您没有用于过期/删除旧备份的策略,即使您的备份解决方案也会成为问题。好吧,队列也不例外。我们必须确保我们的应用程序不会让队列永远增长。我们需要制定一些策略来删除/驱逐/迁移旧消息。
在 RabbitMQ 3.2.0 中,我们引入了消费者优先级,这并不令人意外地允许我们为我们的消费者设置优先级。这为我们提供了一些关于 RabbitMQ 如何向消费者传递消息的控制,以便获得一种可能对我们的应用程序有益的不同类型的调度。
你会在什么情况下想在你的代码中使用消费者优先级?
因此,我们在 RabbitMQ 3.2.0 中添加了对联合队列的支持。这篇博文解释了它们的用途以及如何使用它们。
所以我们已经讨论了 RabbitMQ 3.0 如何破坏事物,但这不是很积极。让我们来看看一些新功能!只是一些 - 3.0 中变化很大,我们没有一整天的时间...
RabbitMQ 包含许多很酷的新功能。但是为了实现其中的一些功能,我们需要改变一些东西。所以在这篇博文中,我将列出其中的一些内容,以防您需要对它们做任何事情。
我为 RabbitMQ 编写了一个插件,添加了对 MQTT 3.1 协议的支持。MQ 遥测传输是一种轻量级的 PUB/SUB 协议,专为资源受限的设备和带宽受限的情况而设计,使其非常适合传感器和移动设备。该实现是一个协议适配器插件,允许 MQTT 客户端与实现其他协议的客户端同时连接到 RabbitMQ 代理。我们鼓励需要将低开销协议与具有高可靠性和企业功能的强大、可扩展的代理相结合的项目考虑此选项。