请教问题:关于openjms和acknowledge的问题
我在做一个通讯程序,使用openjms作为JMS消息服务,acknowledge mode是client,大致过程是我在onmessage中监听道消息,然后把该消息发送到远端的服务器上,处理完成以后acknowledge,正常情况下一切正常。
但是当网络断了的时候,onmessage照常工作(监听的是本地队列),但是监听道消息以后,在她试图发送到远端服务器的时候会引发异常,因此我就没有acknowledge,也就是说没有删除消息,--------这里还有一个怪问题,明明数据库中没有删除掉当前的message,可是admin中看到的消息队列上的消息数量却减少了一条------但是,当网络重新接通时,我的listener监听到消息队列上有消息,就把当前消息发送走,同时acknowledge,结造成把这段时间内所有的消息都删除掉了,而接收端只接收到了当前监听到的那一条消息,结果出现了丢失消息的问题。
我的理解:我查了一下acknowledge,发现她会将当前session中的所有消息都清掉,而当网络中断以后,每一条发送失败的消息相当于都堆积在消息队列中了,当网络从新联通的时候,一acknowledge就把所有的消息都清掉了。-----------我的理解可能是错的,:)
我现在希望:当网络中断的时候,我监听到消息,试图发送,引发异常,这都没关系,只要不删掉消息,当网络从新联通的时候,能够再一条条的把消息发送走,不造成消息丢失。
请诸位谁能指点一下,若能到oicq或者msn上指点一二,就更是感谢万分。
oicq:3921746
msn:ldyocean@hotmail.com.cn