Hi Werner,

Mind if I ask how you got the solution for this? Is this documented? Am just thinking that it's odd that you have to specify that "explicitQosEnabled" flag for this to work - it'd be so much nicer if you could just set the attributes and have the endpoint infer that you are explictly setting the QOS?

/Ade

On 10 Nov 2008, at 20:05, vesteraas wrote:


Problem solved! The messages are now non-persistent and the expiration field
is correctly set.

My xbean.xml now looks like this:

<?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"
               explicitQosEnabled="true"
               deliveryMode="1"
               pubSubDomain="false"
               priority="5"
               timeToLive="90000"
               connectionFactory="#connectionFactory" />

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

The trick was to add the attribute "explicitQosEnabled" with a value of
"true".

Regards,

Werner Vesteraas
Oslo,
Norway


vesteraas wrote:

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-tp20423525p20427065.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


---
Adrian Trenaman, Consultant Fellow, PS - Opensource Center of Competence
Progress Software Corp
Shelbourne Road, Dublin 4, Ireland
---
+353-1-637-2659 (Office)
+353-1-637-2882 (Fax)
+353-86-6051026 (Mobile)
 adrian.trenaman (Skype)
----
Blog: http://trenaman.blogspot.com








Reply via email to