我一直在评估几种开源消息队列技术,例如 RabbitMQ、ActiveMQ、OpenAMQ 等。我的问题是,使用 Tibco EMS、WebSphereMQ、Sonic 等商业技术而不是 Active 之类的技术可以获得什么好处还是兔子?PHP 将是主要涉及的语言,尽管 Java 系统也会进行交互。
6 回答
我会说好处很少而且相差甚远。在投资之前,您确实需要确保商业系统适合您,因为可能没有回头路。
其中一些东西是如此深奥,如此容易被供应商锁定,如此重量级,以至于你会觉得你的背上有一只大猩猩,而不仅仅是一只猴子;)
那些商业技术很好,但对它们的投资可能很陡峭。做出决定时必须考虑年度许可成本和持续支持成本。就供应商锁定而言,在商业世界中,只有一个供应商为给定的产品提供支持。在开源世界中,通常有不止一个供应商提供支持。以 ActiveMQ 为例。Progress Software 和 SpringSource 都为 ActiveMQ 和其他一些提供支持协议。
此外,在商业世界中,您永远无法亲自查看源代码。对于像 ActiveMQ 这样的产品,任何人都可以获取源代码。这非常强大,因为这意味着您可以添加功能等,并且很可能将它们添加到产品中。
ActiveMQ 有一个很棒的社区,并且部署非常广泛。ActiveMQ 为多种语言提供客户端 API,包括 C/C++、Java、.NET、Perl、PHP、Python、Ruby 等。
布鲁斯
我认为在选择消息传递系统之前,最好彻底检查您的要求:
- 例如,并非所有商业供应商都会支持 PHP。ActiveMQ 和 RabbitMQ 会。
- 并非所有消息传递系统都可以支持非常大的队列大小 - 尽管 ActiveMQ 支持
- 并非所有消息传递系统都能在代理硬停止后不丢失 ActiveMQ 将丢失的消息——而您不必使用事务。
如果你打算使用开源——总是看看社区——ActiveMQ 是所有开源消息供应商中最活跃的社区——它也是 Apache——这意味着多样性,并且不依赖任何单一的开发人员或供应商来交付。
我发现最大的不同是运营支持和管理。商业供应商通常为操作/支持人员提供更好的工具来重新提交、编辑消息等。
这通常是开源产品的一个弱点,如果得到纠正,应该会导致商业供应商严重缺乏睡眠。
RabbitMQ 等项目周围有很多很棒的社区(例如,查看邮件列表)。此外,如果成本是一个问题,那么开源显然是一个胜利。
如果您使用商业产品,它会附带一切(只是我们必须使用),但所有开源产品都会具有基本功能,但我们仍然可以实现商业产品功能(涉及大量开发)