RabbitMQ Java 客户端 4.0 中的指标支持
RabbitMQ Java 客户端 4.0 版本引入了运行时指标支持。这对于了解客户端应用程序的运行状况特别有用。让我们看看如何启用指标收集以及如何在 JMX 中甚至在 Spring Boot 应用程序内部监控这些指标。
RabbitMQ Java 客户端 4.0 版本引入了运行时指标支持。这对于了解客户端应用程序的运行状况特别有用。让我们看看如何启用指标收集以及如何在 JMX 中甚至在 Spring Boot 应用程序内部监控这些指标。
RabbitMQ 团队很高兴地宣布发布 RabbitMQ Java 客户端 4.0 版本。此新版本不包含任何破坏性更改,并带来了一系列有趣的新功能。
AtomizeJS 是一个用于编写分布式程序的 JavaScript 库,这些程序在浏览器中运行,而无需在服务器上编写任何应用程序特定的逻辑。
在 RabbitMQ 总部,我们花费大量时间进行争论。偶尔,这些争论是关于重要的事情,比如“消息传递”到底意味着什么,以及可以用于实现“消息传递”的各种 API。RabbitMQ 和 AMQP 为消息传递提供了一个非常明确的接口:你确实有“发送”和“接收”这两个动词,并且需要考虑你的消息传递模式。在后台有很多(通常很巧妙的东西)在进行,但尽管如此,接口还是相当底层的和明确的,这提供了很好的灵活性。然而,有时这种 API 风格并不是解决你正在解决的问题最自然的方式——你是否真的会陷入僵局并想到“我现在需要的是一个 AMQP 消息代理”,或者你是否会根据先前的知识意识到你可以选择使用 AMQP 消息代理来解决当前的问题?
最近我看到一条推文说“ZeroMQ 让一切都 Erlang 化!”之类的。虽然我意识到并非网上发布的所有内容都是认真的,但似乎最近有一股类似的说法应该被遏制。
在《多线程魔法》[^1]一文中,Pieter Hintjens 和 Martin Sustrik 有说服力地解释了为什么消息传递比锁和共享内存更能有效地处理并发。而且我认为,他们在分析中是公平的——除了暗示使用 ZeroMQ 会将你选择的编程语言变成一种家用的 Erlang。
我们 RabbitMQ 总部的大多数人都曾在 Erlang 之外的许多函数式语言工作过,例如 Haskell、Scheme、Lisp、OCaml 等。虽然 Erlang 有很多值得称道的地方,比如它的虚拟机/模拟器,但不可避免地会有我们从其他语言中怀念的功能。对我来说,在回到 RabbitMQ 之前,我在 Haskell 工作了几年,结果发现有各种各样的功能“缺失”,比如惰性求值、类型类、额外的中缀运算符、指定函数优先级的能力、更少的括号、部分应用、更一致的标准库和 do-notation。这是一个不错的列表,我需要花点时间才能在 Erlang 中全部实现它们,但这里有两个作为开端。