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/模拟器,但不可避免地,我们都会怀念其他语言的功能。就我而言,在回到 RabbitMQ 阵营之前,我花了几年的时间使用 Haskell,各种各样的功能都“缺失”了,例如惰性求值、类型类、额外的中缀运算符、指定函数优先级的能力、更少的括号、部分应用、更一致的标准库和 do-notation。这是一个很长的清单,我需要一段时间才能在 Erlang 中实现所有这些功能,但这里有两个入门功能。