gpt4 book ai didi

java - 是否有一种java模式可以让进程不断运行以轮询或监听队列中的消息并处理它们?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:33 24 4
gpt4 key购买 nike

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

对于简单的 CLI/批处理作业,是否有任何众所周知的 Java 模式,可以不断运行以轮询/监听队列上的消息?我想为所有 worker 使用它。或者有更好的方法来做到这一点吗?监听器/工作线程应该部署在应用程序容器中还是可以只是一个独立的程序?

谢谢

编辑:还要注意,我不打算使用 JavaEE/JMS,而是更多托管解决方案,例如 SQS、托管 RabbitMQ 或 IronMQ

最佳答案

如果您使用的是 JavaEE 应用程序服务器(如果没有,您应该使用),则不必手动编写该逻辑,因为应用程序服务器会为您完成此操作。

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

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

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

关于java - 是否有一种java模式可以让进程不断运行以轮询或监听队列中的消息并处理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24190090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com