【ActiveMQ Tuning】vmCursor on Destination
Overview:在ActiveMQ的Broker中,一个cursor用来持有一批内存中消息,这是一批正在等待发送到目标地址的消息。默认的,这批消息是从消息存储中取出,并且指向一个cursor(这是存储游标)
http://fusesource.com/docs/broker/5.4/tuning/PersTuning-vmCursor.html
ActiveMQ有另一种游标实现,VM cursor,在某些情境下非常快。VM cursor是,进入的消息直接关联cursor,同时存储到消息存储中。(关联cursor的同时存储到消息存储中)。如果消费者(consumer)非常快,可以跟的上消息流的话,VM cursor会工作的非常好。但是,对于慢消费者,这个策略就不是那么有效了。VM cursor被积压的消息填满,同时它可能会去调用流控制去抑制producer生产message。
配置vmcursor:下面配置了一个borker的所有topic和queue都使用了vmCursor
<broker ... >
...
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
...
</broker>
topic和queue都使用了通配符【>】,这个匹配所有的目标名称。你可以根据情况指定一些选择目标的模式。但是VM Cursor仅仅适用于那些消费者可以跟得上目标消息节奏的这种情况。