I am new to JMS and trying to understand. I have a Web Service that put messges on a queue. Now on the consumer side I have a Message Driven Bean. What if my MDB is not available and the WS puts some messages in a queue. The messages are still in a queue but not consumed as MDB is not available. Now I restarted the whole system and server and redeployed the MDB but I don't see any messages being consumed by MDB even though there are some messages that are put by Web Service before starting the System. Are the messages lost if in a queue but not yet consumed and a system or server is restarted.
How can I make the messages available in a queue all the time even after a restart. Here is a snippet of code that ques the messages.
If messages gets lost if the system or server is restarted then what's the point of Persistent Messages. Any help is appreciated.
MB<br />Sun Certified Programmer for Java2 Platform
Something strange with your scenario- if the messages are persistent then they must survive an application server restart. What application server are you using? And which JMS Provider- the one coming with the App Server or something else like MQSeries or Oracle Streams?
But what is your back-end data store, is it a database.
As an example, JBoss stores messages in a database. By default it uses the DefaultDS DataSource, which out of the box is Hypersonic, which is an in-memory database, so if the server crashes or is restarted you lose the messages that are in the database. If you change the DefaultDS to point to a database like Oracle, then the messages are persisted even if the server crashes. and on restart reget those saved messages and deliver them.