最近activeMq总是出现message无法消费的问题,所以就了解了一下ActiveMq的消息游标(Message Cursors)。
ActiveMq的消息游标分为三种类型:
- Store-based
- VM
- File-based
-
store-based
从activeMq 5.0开始默认使用这种类型的游标,他有两种模式
第一种:
image.png
消费者能够跟上生产者的脚本,这种情况下message会在存储之后直接传递给消费者。
第二种:

消费者处理速度低于生产者,这种情况下message存储之后会在pending cursor保存消息的引用,等待消费者消费,虽然一个引用本身并不大,它仍然占用了能够挂起等待发送的消息数的一点限度。
-
VM Cursor
image.png
消息引用保存在内存中,需要的时候就传递非分发队列,这种方式速度非常快,但是如果消费较慢的情况会导致pending cursor过多,对内存占用较大,一旦超过设定的最大值,可能会导致一些问题。
-
File based Cursor
image.png
基于文件的游标是从虚拟内存中衍生出来的,当代理的内存达到设置的最大值时候,会将消息写入到临时文件中。这种类型的游标适用的场景是,消息存储相对要慢,但是消费者要快一些。通过在磁盘上做缓冲,消息代理可以在应对消息爆发的时候,不需要从慢存储中读取。
网友评论