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 的 VM/Emulator 非常棒,但不可避免地,我们都错过了其他语言中的某些功能。就我而言,在回到 RabbitMQ 之前,我在 Haskell 中工作了几年,各种各样的功能“丢失”了,比如惰性求值、类型类、额外的中缀运算符、指定函数优先级的能力、更少的括号、部分应用、更一致的标准库和 do-notation。这是一个很长的清单,我需要一段时间才能将它们全部实现到 Erlang 中,但这里有两个作为开始。