我们需要实现一个基于排队的机制(选择一个文件处理它并选择下一个文件)。除了ActiveMQ机制之外,是否还有其他机制来实现此要求?
答案 0 :(得分:5)
有许多可能的方法可以实现您的目标。下面给出了一些最常用的MQ。 IBM MQ: -
IBM WebSphere MQ处理传输消息时遇到的不同处理器,操作系统,子系统和通信协议。如果连接或处理器暂时不可用,IBM WebSphere MQ会对该消息进行排队,并在连接重新联机时将其转发。 https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/com.ibm.mq.pro.doc/q001020_.htm
卡夫卡: - 它是用Java编写的,现在它位于Apache项目的保护伞下。 Kafka是架构,它将消息存储在平面文件中,消费者根据偏移量询问消息 https://dzone.com/articles/exploring-message-brokers
Apache Apollo: - Apache ActiveMQ Apollo从自己的公司获得竞争。 Apollo是最近基于ActiveMQ项目经验的开发。
为了比ActiveMQ更快,更强大和更易于维护,引入了一种全新的架构。该体系结构基于Scala编程语言,可以很好地支持并发系统的开发。 Apollo经纪人的线程与ActiveMQ的线程基本不同。所有任务都以异步和非阻塞的方式执行,这有助于提高性能和稳定性。这意味着可以更好地使用多核处理器的技能。"尽管Apollo是用Scala编写的,但代理可以在Java环境中安全使用"
FFMQ: - Full-Java本机JMS消息Queuer是一个轻量级的JMS实现。整个服务器小于600 KB,但有关JMS一致性或事务的许多限制。如果您可以省去高级JMS功能,例如消息组,则可以使用FFMQ获得简单,快速且简单的消息代理。 Apache Qpid: - 除了ActiveMQ和Apollo之外,还有另一个Apache Message Broker,Apache Qpid。 Qpid项目的目标是与高级消息队列协议标准100%兼容。
Qpid代理可用于C ++和Java。本文介绍Java版本的功能。对于Java客户端,有一个用于Qpid的JMS API。对于C ++,Python和Microsoft的.NET,有Qpid Messaging API。
RabbitMQ的: - RabbitMQ代理是由功能语言Erlang创建的。 Erlang特别适用于分布式应用程序,因为并发性和可用性得到了很好的支持。
不要被阻止在Erlang中实现RabbitMQ。它的安装在Windows和Mac OS上快速轻松地运行。对于使用Java或其他语言编程,可以使用客户端库。
由于其架构,ActiveMQ代理在可扩展性,健壮性和可靠性方面存在局限性。但只有在极高的负载或成千上万的队列中,ActiveMQ才能显示其极限。在实践中,由于ActiveMQ的成熟,它通常比现代挑战者更稳定。