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