You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Jochen Zink <jo...@web.de> on 2007/05/22 13:43:19 UTC

Developing a MessageDrivenBean

Hello,

I have a simple MDB which works as a JMSReceiver. The MDB subscribes to a JMS-Topic. Everything works fine. If a new message is published to the Topic, the MDBs onMessage Method is called. 

I want, that the bean can receive the same message over again, If an error inside the bean is raised. Normally I can deal with "jmsmessage.acknowledge();" Method to notify, that the reciever handled the message correctly. If an error is raised on the receivers side, no acknowledge() is called. Normally in this case I expected, the message would send over again. But not with a MDB. It does not matter if I call acknowledge or not. The MDB creates the JMSSession where I can configure, that the session runs in "CLIENT_ACKNOWLEDGE" mode. 

What musst I do to get this behavior?

I want, that the messageDrivenBean can say, that everything is correct and the message can be deleted from the topic if all subscibers have it received. But if the Bean raised an error, it should be possible for the bean, to receive the same message over again after a while. 

Maybe it is only configuration stuff. But I can't find infos on activeMQ or openEJB Homepage.

Can someone help me?
thanks!

_______________________________________________________________
SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192


Re: Developing a MessageDrivenBean

Posted by David Jencks <da...@yahoo.com>.
I am not really an mdb/jms expert.... so there may be a way to do  
this with acknowledgements.  However one sure way to do this is with  
transactional delivery.   If the mdb can't process the message it can  
call setRollbackOnly on the MessageDrivenContext.  According to what  
I've heard this is likely to be significantly slower than non- 
transactional delivery.

thanks
david jencks

On May 22, 2007, at 4:43 AM, Jochen Zink wrote:

> Hello,
>
> I have a simple MDB which works as a JMSReceiver. The MDB  
> subscribes to a JMS-Topic. Everything works fine. If a new message  
> is published to the Topic, the MDBs onMessage Method is called.
>
> I want, that the bean can receive the same message over again, If  
> an error inside the bean is raised. Normally I can deal with  
> "jmsmessage.acknowledge();" Method to notify, that the reciever  
> handled the message correctly. If an error is raised on the  
> receivers side, no acknowledge() is called. Normally in this case I  
> expected, the message would send over again. But not with a MDB. It  
> does not matter if I call acknowledge or not. The MDB creates the  
> JMSSession where I can configure, that the session runs in  
> "CLIENT_ACKNOWLEDGE" mode.
>
> What musst I do to get this behavior?
>
> I want, that the messageDrivenBean can say, that everything is  
> correct and the message can be deleted from the topic if all  
> subscibers have it received. But if the Bean raised an error, it  
> should be possible for the bean, to receive the same message over  
> again after a while.
>
> Maybe it is only configuration stuff. But I can't find infos on  
> activeMQ or openEJB Homepage.
>
> Can someone help me?
> thanks!
>
> _______________________________________________________________
> SMS schreiben mit WEB.DE FreeMail - einfach, schnell und
> kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192
>