A
Attila Barbocz
I have two simple questions:
1. Let's suppose a situation when a table lock is present in our
database and the MDB regularly runs into this lock every time when the
onMessage method is called. It always reserves a new MDB because the
MDB created by the previous call is not capable to move back to the
pool becaus of the lock. It means if there is no more free bean in the
pool a new bean will be created. Hence a simple database lock can
cause application server to run out of system resources.
Is there any way to catch the timeout or how can I avoid this
situation?
2. If consumption of the message fails the message is redelivered
successively but the reason of the failure is still present. I
wouldn't like to lose these failed messages. Do I have to move these
to another queue or is there any standard scenario for this kind of
situation? Can I delay the redelivery?
Thanks in advance
1. Let's suppose a situation when a table lock is present in our
database and the MDB regularly runs into this lock every time when the
onMessage method is called. It always reserves a new MDB because the
MDB created by the previous call is not capable to move back to the
pool becaus of the lock. It means if there is no more free bean in the
pool a new bean will be created. Hence a simple database lock can
cause application server to run out of system resources.
Is there any way to catch the timeout or how can I avoid this
situation?
2. If consumption of the message fails the message is redelivered
successively but the reason of the failure is still present. I
wouldn't like to lose these failed messages. Do I have to move these
to another queue or is there any standard scenario for this kind of
situation? Can I delay the redelivery?
Thanks in advance