gpt4 book ai didi

java - 带有消费者代码的执行器服务框架

转载 作者:行者123 更新时间:2023-11-29 05:39:22 29 4
gpt4 key购买 nike

我计划使用带有固定线程池和 IBM MQ 消息传递的 ExecutorService 编写类似于生产者和消费者的代码。

假设作为消费者,我创建了 10 个固定线程。如果我在消费者队列中放置 10 条消息,它将如何处理? 10 个消费者工作线程将如何覆盖以下场景?

  1. 每个工作线程同步接收单个消息并处理消息?

  2. 每个消费者工作线程接收所有这 10 条消息,就像每条消息 1 个工作线程一样?

  3. 读完这条消息作为上面的第二种情况,每个线程如何调用执行器服务。是并发还是同步完成。

  4. 如果队列中有20条消息,consumer worker线程如何获取这些消息,每个线程获取2条消息?如果每个线程需要一条消息会发生什么其他 10 条消息?

在处理上述场景时,有 web 服务调用和内部 api 方法调用,但这些是同步方法。那么如果我实现这个类来并发处理代码有什么用吗?

最佳答案

如果您在应用程序服务器(例如 WebSphere)中运行,那么您只需将消息驱动 Bean (MDB) 部署到 JMS 队列上,它就会完全按照您的描述执行操作。

如果您只是构建 Java 应用程序,则可以使用 ExecutorService。首先将 MessageListener 放置到 Session 上,并让该监听器的 onMessage() submit() 将消息的处理器(例如 Runnable)发送到 ExecutorService。一旦该处理器完成其工作,它应该确认()该消息。

关于java - 带有消费者代码的执行器服务框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218297/

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