单个服务拉取大量队列消息有什么好的方法么

2021-02-16 13:26:38 +08:00
 NoKey

我这里只运行了一个服务,订阅了一个消息队列

生产者会不断的往队列里写入消息

我这里读取到消息后,还有一个处理消息的过程

如果是单线程的话,那么效率很低,如果前一条消息处理堵塞了,那么整个都会堵塞

我能想到的就是创建一个线程池,每个消息都用一个线程单独处理

这方面有没有比较好的处理方式,或者处理框架呢?

请大佬指点一下,谢谢

1912 次点击
所在节点    程序员
8 条回复
dangge
2021-02-16 13:47:17 +08:00
先看是什么消息队列
然后找对应的封装好的框架
----------------
如果前一条消息处理堵塞了,那么整个都会堵塞
起异步线程处理啊。
ferock
2021-02-16 13:54:01 +08:00
master 加 worker 模式啊
Jooooooooo
2021-02-16 13:54:19 +08:00
消费线程也多来几个, 异步处理也是个办法
ferock
2021-02-16 13:56:04 +08:00
标准队列模式应该是同一个 group 消费是原子的,消费过程中不要继续监听,让其他 worker 监听不就好了
NoKey
2021-02-16 14:53:59 +08:00
@dangge rabbitMq 的话,有什么好的框架呢?谢谢
NoKey
2021-02-16 14:54:38 +08:00
@ferock 我看了一下 master worker 模式,跟用线程池异步处理差不多的吧
ferock
2021-02-16 15:56:46 +08:00
@NoKey #5

你开心就好
jenlors
2021-02-18 10:18:33 +08:00
最好的方式就是尽量压榨所有的 CPU,看语言使用多进程,多线程,协程。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/753536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX