Hi,

I'm using JBoss 4.0.5 GA and MDB with EJB3.

The MDB ist listening to a topic with a durable subscription.

On error, I rollback the transcation in the onMessage method - but the message 
is never redelivered - please can anybody help me ?

@MessageDriven(activationConfig={
                @ActivationConfigProperty(propertyName="destinationType", 
propertyValue="javax.jms.Topic"),
                @ActivationConfigProperty(propertyName="destination", 
propertyValue="topic/STATECHANGE"),
                
@ActivationConfigProperty(propertyName="subscriptionDurability", 
propertyValue="Durable"),
                @ActivationConfigProperty(propertyName="subscriptionName", 
propertyValue="DispoStateChangeListener"),
                @ActivationConfigProperty(propertyName="sessionTransacted", 
propertyValue="true"),
                @ActivationConfigProperty(propertyName="clientId", 
propertyValue="DispoStateChangeListenerID"),
                @ActivationConfigProperty(propertyName="durable", 
propertyValue="true")
                
})
public class StateChangeNotificationListener implements MessageListener {
        
        @EJB(name=DispoFacadeLocal.LOCAL_JNDI)
        private DispoFacadeLocal dispoFacade;
        
        @Resource private MessageDrivenContext context;
        
        private Logger logger = 
Logger.getLogger(StateChangeNotificationListener.class);
        
        @TransactionAttribute(value=TransactionAttributeType.REQUIRED)
        public void onMessage(Message message) {
                if (message instanceof MapMessage) {
                        try {
                                MapMessage mapMessage = (MapMessage) message;
                                if 
(mapMessage.getBoolean(StateChangedParameter.ORDERTASK)) {

                                .......
                                                if 
(handleNotification(parameter)) {
                                                message.acknowledge();
                                        } else {
                                                context.setRollbackOnly();
                                        }
                                } else {
                                        message.acknowledge();
                                } 
                        } catch (JMSException ex) {
                                logger.error("error receiving message: ", ex);
                        } catch (BusinessException ex) {
                                logger.error(ex);
                        }
                }
        }

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4111549#4111549

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4111549
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to