有没有适用于低端设置的RabbitMQ良好替代品?

24

我已经在几个场景中使用RabbitMQ了,但总觉得应该有更容易设置的东西。尽管它很方便,但很难为只处理几千条消息的解决方案辩护,因为维护RabbitMQ需要大量工作。

有人知道一个安装和维护过程简单的AMQP实现吗?

对于那些不知道的人,RabbitMQ是用Erlang编写的AMQP实现。它被认为非常稳定,但前提是你足够了解Erlang以避免它的问题。无论是内存限制还是主机名的更改,总是需要深入了解。


1
如果你遇到了内存限制,那么你所处理的信息量肯定不止“一天几千条消息”这么简单。如果你改变主机名,那么这将有效地禁用mnesia数据库。另一方面,它通常只使用13MB的RAM,因此要求相对较低,而且安装通常是Deb、RPM或MSI格式。既然你已经遇到了常见问题,RabbitMQ仍然可能是你最好的选择。 - scvalex
通过内存限制,我指的是Erlang中默认的内存限制设置。当消费者死亡时,由于默认进程限制很小,太多消息排队会导致问题。由于外部网络名称更改,我也遇到了问题,以及一些崩溃问题,如果没有对Erlang有更深入的了解,我可能无法追踪这些问题。Erlang复杂的多处理环境需要过多的学习和维护,不适合非专业使用。 - lyschoening
@lyschoening 你好,我很好奇你是否决定使用Qpid或其他替代RabbitMq的方案?祝好。 - CaptainHastings
如果有人想知道,我最终决定我的应用程序不需要AMQP,而是使用了Redis和0MQ。 - lyschoening
3个回答

10

http://www.zeromq.org/也许是你正在寻找的东西。 如果你使用Windows操作系统,你可以使用MSMQ。

编辑:我想我错过了问题中关于AMQP的部分。


0MQ是否符合AMQP标准?我认为OP想要一个AMQP代理。 - David Dossot
4
0MQ不是AMQP。它使用自己的传输格式,没有队列、交换机等高级概念。据我所知,它大部分是点对点的(即任何对等方都是服务器),而不像AMQP客户端和代理完全不同。还有一个RabbitMQ插件可以让其与0MQ客户端通信;因此,如果OP需要轻量级客户端,并且可以使用AMQP代理,那么这是一个选择(但可能不是一个好选择)。 - scvalex
MSMQ完全不支持通过互联网接收消息,因此我几乎只能看到它在同一台机器上运行的应用程序中有实际用途。有关更多详细信息,请参见http://stackoverflow.com/q/19156136/3136474。 - Dinei

2

ActiveMQ似乎是一个不错的选择,我之前使用RabbitMQ在WAN上建立“集群”,但是RabbitMQ集群不支持此操作,因为它要求所有机器都在同一地点。

相比之下,ActiveMQ在“集群”方面更好,因为它易于设置和维护。


0

Apache Qpid是另一个开源的AMQP代理程序:http://qpid.apache.org/

免责声明:我自己没有使用过它,所以无法告诉您它与RabbitMQ相比如何。


2
它比RabbitMQ更加重量级。如果您有大量遗留的企业代码,并且只想将其绑定到AMQP,则通常使用QPid。 - scvalex
然而,与Qpid相比,RabbitMQ的语言绑定较少。 - Maxim Egorushkin
1
所有与RabbitMQ兼容的AMQP客户端都应该能够与Qpid一起使用,因此语言绑定不应该是一个问题。 - minaev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接