java消息队列或手动读取文件

时间:2012-07-26 08:33:02

标签: java io jms message-queue

我们有单独的Java实例程序处理原始weblog:

jvm instance 1 read fileA --> process
jvm instance 2 read fileA ---> process
jvm instance 3 read fileA ---> process
....

我认为当jvm实例的数量增加时,disk IO进程的数量会增加。而且有一段时间这个解决方案无法正常工作。

所以任何人都可以告诉我另一个解决方案for reduce the disk IO

我认为理想的是使用JMS服务器(如Apache ActiveMQ)来读取队列和进程中的存储文件。

如果我使用JMS ???

有任何问题

请帮助我。

1 个答案:

答案 0 :(得分:2)

事件驱动的解决方案当然是一个不错的选择,因此JMS可能是一个很好的解决方案。

但是你应该记住,如果你的消费者无法跟上生产者并且你将使用持久交付,消息将存储在你的硬盘上,这将导致磁盘IO。但我认为这不会是一个问题,因为你总是可以增加并发消费者的数量,甚至可以使用集群(例如,使用ActiveMQ配置非常容易)以跟上负载。

总而言之,我认为JMS可以很好地解决您的问题,因为您不需要主动轮询文件系统以进行更改,并且可以非常轻松地扩展您的处理应用程序。

如果您对整合主题感兴趣,可以访问enterprise integration site并阅读Gregor Hohpe和Bobby Woolf关于此主题的非常好的书。您可以在上述网站找到它的链接。在其中,您将找到两种方法的所有优点和含义,并熟悉其他可用的方法。无论如何,消息传递绝对是一种很好的方式。

您可以考虑使用camel framework作为提及模式的实现。