跳至主要内容

带有“编程语言”标签的 16 篇文章

查看所有标签

使用 Elixir 编写 RabbitMQ 插件

·阅读时间:8 分钟
Alvaro Videla

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

AtomizeJS:分布式软件事务内存

·阅读时间:3 分钟
Matthew Sackman

AtomizeJS 是一个用于编写分布式程序的 JavaScript 库,这些程序可以在浏览器中运行,而无需在服务器上编写任何特定于应用程序的逻辑。

在 RabbitMQ 总部,我们花费了相当多的时间争论。偶尔,我们会讨论一些重要的事情,比如消息的真正含义,以及可以用来实现消息的各种 API。RabbitMQ 和 AMQP 对消息传递提出了一个非常明确的接口:你实际上有发送接收动词,你需要考虑你的消息模式是什么。在幕后有很多(通常非常聪明的东西),但尽管如此,接口还是相当低级和明确的,这提供了相当大的灵活性。然而,有时这种 API 风格并不适合你尝试解决的问题——你真的会遇到僵局,然后认为“我在这里需要的是一个 AMQP 消息代理”,或者你是否从现有的知识中意识到,你可以选择使用 AMQP 消息代理来解决你当前的问题?

ZeroMQ != Erlang

·阅读时间:3 分钟
Michael Bridgen

最近我看到一条推特说“ZeroMQ 将一切 Erlang 化!”,或者类似的。虽然我知道并非所有发布在网络上的内容都是认真对待的,但最近确实似乎出现了一股类似的说法,应该加以抑制。

在文章多线程魔法[^1]中,Pieter Hintjens 和 Martin Sustrik 令人信服地解释了为什么消息传递比锁和共享内存更好地服务于并发。我认为,他们在分析中是公平的——除了暗示使用 ZeroMQ 会将你选择的编程语言变成一种国内的 Erlang。

你能听到鼓声吗,Erlando?

·阅读时间:16 分钟
Matthew Sackman

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

© 2024 RabbitMQ. All rights reserved.