跳到主要内容

标记为“编程语言”的 16 篇文章

查看所有标签

使用 Elixir 编写 RabbitMQ 插件

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

© . All rights reserved.