java - Jms session.recovery meaning -




i investigating jms api

i misunderstand following method meaning:

https://docs.oracle.com/javaee/7/api/javax/jms/session.html#recover--

void recover() throws jmsexception
stops message delivery in session, , restarts message delivery oldest unacknowledged message. consumers deliver messages in serial order. acknowledging received message automatically acknowledges messages have been delivered client.

restarting session causes take following actions:

stop message delivery mark messages might have been delivered not acknowledged "redelivered" restart delivery sequence including unacknowledged messages had been delivered. redelivered messages not have delivered in original delivery order. throws: jmsexception - if jms provider fails stop , restart message delivery due internal error. illegalstateexception - if method called transacted session.

in another doc written:

if use queue or durable subscription, can use session.recover method stop nontransacted session , restart first unacknowledged message. in effect, session’s series of delivered messages reset point after last acknowledged message. messages delivers may different delivered, if messages have expired or if higher-priority messages have arrived. nondurable topicsubscriber, provider may drop unacknowledged messages when session recovered.

but still unclear happens. maybe real use case can understand.





wiki

Comments

Popular posts from this blog

Asterisk AGI Python Script to Dialplan does not work -

python - Read npy file directly from S3 StreamingBody -

kotlin - Out-projected type in generic interface prohibits the use of metod with generic parameter -