大家好!
最近公司有个项目会部署在glassfish 2.1上并使用open MQ作为异步消息队列。但是在设计时遇到两个JMS相关的问题,看了很久文档(包括JMS的spec和open MQ 4.4的spec)都没有找到确切的答案,不知道这里有没有朋友能够解惑。问题如下:
1、有关message的priority:spec中只定义了0-5为普通优先级,6-9为高优先级,其中4为默认优先级,并且仅提到在JMS服务器down掉并重启后会根据优先级重发消息。那么open MQ对于6-9的优先级有具体处理么?即能保证优先级为7的消息肯定能比6的先发么?或者有这么一个应用场景:现在有10000个优先级为6的消息在队列中,并在不断地被消费(没有异常,只是速率比较慢)此时新来一个7的消息,open MQ能保证此条消息立即被发送出去么?如果不能立即发送的话open MQ会在何时发送此条消息?
2、有关异步message的确认:若把deliver mode定义为client acknowledgement,需要在onMessage()中手动调用message的acknowledge方法确认消息。那如果在客户端没有答复之前,此条消息会被其它consumer取走么?另外如果在onMessage方法中出现异常该怎么处理?是客户端自行处理异常并最终调用acknowledge将消息从队列中移走么?如果一直没有调用knowledge方法这条消息会被怎么处理?被移入dead queue么?
在此先谢过了!
--
iJay@Yingzhi Tech.
徐佳晶
金麟岂是池中物,一遇风云便化龙
-----------------------------------------------------------
www.ijay.net.cn-----------------------------------------------------------
Sent from Beijing, 11, China