gpt4 book ai didi

Java,使用队列管理器进行大规模消息处理(交易)

转载 作者:行者123 更新时间:2023-11-29 09:40:19 28 4
gpt4 key购买 nike

我想设计一个简单的应用程序(没有 j2ee 和 jms),可以处理大量消息(比如在交易系统中)

我创建了一个服务,可以接收消息并将它们放入队列中,这样系统就不会在过载时卡住。

然后我创建了一个包装队列的服务(QueueService),并有一个 pop 方法从队列中弹出一条消息,如果没有消息返回 null,这个方法被标记为“同步”以进行下一步。

我创建了一个知道如何处理消息的类 (MessageHandler) 和另一个可以在新线程中“监听”消息的类 (MessageListener)。该线程有一个“while(true)”并且始终尝试弹出一条消息。

如果返回一条消息,线程将调用 MessageHandler 类,完成后,他将请求另一条消息。

现在,我已将应用程序配置为打开 10 个 MessageListener 以允许多消息处理。

我现在有 10 个线程,它们一直处于循环中。

这样的设计好吗??

任何人都可以向我推荐一些如何处理这种情况的书籍或网站吗?

谢谢, 罗尼

最佳答案

从您的描述看来,您的方向是正确的,只有一点异常(exception)。您实现了忙等待从队列中检索消息。

更好的方法是在同步的popMessage() 方法中阻塞您的线程,当没有更多消息可以弹出时在队列资源上执行wait() -编辑。当向队列添加 (a) 条消息时,等待线程通过 notifyAll() 唤醒,一个或多个线程将收到一条消息,其余线程重新进入 wait() 状态。

这样CPU资源的分配会更平滑。

关于Java,使用队列管理器进行大规模消息处理(交易),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783529/

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