How can I write non-persistent messages to a queue on ActiveMQ 5.1?  Also, I
would like to set the expiration property on the message.

When messages are showing up in the queue in ActiveMQ, they show up as
persistent and with 0 in the expiration field.  First I tried the
jms:provider attributes deliveryMode and timeToLive, with no luck.  Then I
wrote my own marshaler to modify these fields directly on the messages. 
Still with no luck.

Do I miss something?

This is my xbean.xml for my JMS SU:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0";
       xmlns:amq="http://activemq.org/config/1.0";
       xmlns:test="http://werner.no/test";>

  <jms:provider service="test:JMSService"
                endpoint="jmsEndpoint"
                destinationName="queue/Test/SubscriberStatus"
                connectionFactory="#connectionFactory" />

  <amq:connectionFactory id="connectionFactory"
brokerURL="tcp://localhost:61616" /> 

  <bean id="marshaler" class="no.werner.test.CustomMarshaler" />
</beans>

And this is my marshaler:

package no.werner.test;

import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
import javax.jms.DeliveryMode;
import javax.jms.Message;
import javax.jms.Session;

import org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler;

public class CustomMarshaler extends DefaultProviderMarshaler {

  public CustomMarshaler() {
    super();
  }

  public Message createMessage(MessageExchange exchange, NormalizedMessage
in, Session session) throws Exception {
    Message toSend = super.createMessage(exchange, in, session);

    toSend.setJMSExpiration(10000L);
    toSend.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
    return toSend;
  }
}

Regards,

Werner Vesteraas
Oslo,
Norway


-- 
View this message in context: 
http://www.nabble.com/JMS-Expiration-and-non-persistent-mode-on-jms%3Aprovider-tp20423525p20423525.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to