Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个java模式让进程不断运行,以轮询或侦听队列中的消息并对其进行处理?_Java_Message Queue_Messaging - Fatal编程技术网

是否有一个java模式让进程不断运行,以轮询或侦听队列中的消息并对其进行处理?

是否有一个java模式让进程不断运行,以轮询或侦听队列中的消息并对其进行处理?,java,message-queue,messaging,Java,Message Queue,Messaging,计划将我们的许多单线程同步处理批处理作业转移到一个更具分布式的体系结构中。其思想是让主进程从数据库中读取记录,并将它们发送到队列。然后让多个工作人员读取队列以并行处理记录 对于经常运行以轮询/侦听队列上消息的简单CLI/批处理作业,是否有任何众所周知的java模式?我想对所有的工人都这么做。还是有更好的方法?侦听器/工作程序应该部署在应用程序容器中,还是仅仅是一个独立的程序 谢谢 编辑:还要注意的是,我不想使用JavaEE/JMS,而是想使用更多的托管解决方案,如SQS、托管RabbitMQ或I

计划将我们的许多单线程同步处理批处理作业转移到一个更具分布式的体系结构中。其思想是让主进程从数据库中读取记录,并将它们发送到队列。然后让多个工作人员读取队列以并行处理记录

对于经常运行以轮询/侦听队列上消息的简单CLI/批处理作业,是否有任何众所周知的java模式?我想对所有的工人都这么做。还是有更好的方法?侦听器/工作程序应该部署在应用程序容器中,还是仅仅是一个独立的程序

谢谢


编辑:还要注意的是,我不想使用JavaEE/JMS,而是想使用更多的托管解决方案,如SQS、托管RabbitMQ或IronMQ,我对此不太了解,可能也没有真正回答您的问题,但几个月前我尝试了一些您可能感兴趣的方法来处理消息队列

你可以看看这个:


我似乎可以解决您的需求。

如果您使用的是JavaEE应用程序服务器(如果不是,您应该这样做),那么您不必手动编写该逻辑,因为应用程序服务器会为您完成

然后实现并部署侦听队列并处理接收到的消息的。应用程序服务器将管理一个连接池来侦听队列消息,并使用消息驱动bean的实例创建一个线程,该实例将接收消息并能够处理它

这些消息将被并发处理,因为应用服务器将有一个连接池和一个线程池可用于侦听队列


所有以JavaEE为特色的应用程序服务器(如IBM Websphere或JBoss)在其管理控制台中都有可用的配置,可以根据消息队列或消息队列实现创建消息队列侦听器,然后将此消息队列侦听器绑定到您的消息驱动Bean。

服务总线如何?它不仅限于Java,但是你在描述一个系统。谢谢——这就是我一直在读的系统类型。更具体地说,对于java消费者/工作者,我想知道在等待消息时只执行while(true)是否是一种不好的做法,或者是否有更好的方法。即使他不使用JavaEE,他也只能使用JMS和ActiveMQ之类的实现。@F.Böller是的,他可以,但是他还需要实现连接和侦听器池逻辑,这已经在JavaEE应用服务器中完成了。您可以在没有应用服务器的情况下使用JMS。我在两个程序中使用了它。