消息的优先级

通常,可以确保将单个会话向目标发送的所有消息按其发送顺序传送至消费者。然而,如果为这些消息分配了不同的优先级,消息传送系统将首先尝试传送优先级较高的消息。 有两种方法设置消息的优先级: 1.使用 setPriority 方法,这样所有的消息都采用此传送模式; 2.使用 send 方法为每一条消息设置传送模式; 消息优先级从 0-9 十个级别。如果不指定优先级,则默认为4。JMS不要求严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达。

在Broker端,默认是不支持priority排序的,我们需要手动开启:

<policyEntry queue=">" prioritizedMessages="true"/>

对于消费者而言,我们需要关注一个参数:messagePrioritySupported;它表示消费者端是否支持权重排序,默认为true,即当消费者客户端使用了prefetchSize时,将会对这些已经到达session但还没有转发给消费者的消息列表,按照权重排序。我们可以通过这种方式开启:

//brokerUrl中  
jms.messagePrioritySupported=true

如果你关闭了此选项,那么需要注意,当高权重的消息因为消费异常而重发时,将不能被优先消费。

results matching ""

    No results matching ""