Ok, I solved the problem, in <jms:provider /> endpoint there must be defined timeToLive property in conjunction with explicitQosEnabled="true" property.
2008/11/27 zminy rado <[EMAIL PROTECTED]> > > Hello again, after few test, i noticed that I was using wrong method in > DefaultProviderMarshaler, now I have problem with overriding JMSExpiration > property, I've tried timeToLive and receiveTimeout properties in > <jms:provider /> endpoint, but it seems that properties sets some exchange > behaviour instead of message. This is the code for my custom marshaler, and > configuration of <jms:provider /> endpoint, in this marshaler I'm setting > JMSExpiration property and JMSCorrelationID property and only JMSExpiration > property is overriden to 0. > > This is view of message in activemq queue: > http://img213.imageshack.us/img213/1121/jconsolekx9.jpg > > import javax.jbi.messaging.NormalizedMessage; > import javax.jms.JMSException; > import javax.jms.Message; > > import org.apache.log4j.Logger; > import org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler; > > public class MyMarshaler extends DefaultProviderMarshaler { > > private static final Logger LOG = Logger.getLogger(MyMarshaler.class); > > protected void copyPropertiesFromNM(NormalizedMessage > normalizedMessage, Message message) throws JMSException { > message.setJMSExpiration(10000); > message.setJMSCorrelationID("custom_corrid"); > super.copyPropertiesFromNM(normalizedMessage, message); > if (message.getJMSExpiration() != 10000) { > LOG.error("===================== this is stupid > ============================"); > } > } > } > > > <jms:provider service="test:clientProviderService" > endpoint="clientProviderEndpoint" > destinationName="outClientQueue" > connectionFactory="#xaConnectionFactory" > marshaler="#myMarshaler" /> > > <bean id="myMarshaler" class="com.test.MyMarshaler" /> > > <bean id="transactionManager" > class="org.jencks.factory.TransactionManagerFactoryBean" /> > > <amqpool:xa-pool id="xaConnectionFactory" > brokerURL="tcp://localhost:61616?jms.useAsyncSend=true" > transactionManager="#transactionManager" maxConnections="100" /> > > Do you supose, what overriding JMSExpiration property? > > > > > 2008/11/27 zminy rado <[EMAIL PROTECTED]> > > Hello, >> >> I've tried property timeToLive in <jms:provider /> endpoint, but this is >> not setting the JMSExpiration property. But I noticed that <jms:provider /> >> do not use my custom marshaler. Do you know when <jms:provider /> endpoint >> ignore custom marshalers? >> >> 2008/11/26 Gert Vanthienen <[EMAIL PROTECTED]> >> >> L.S., >>> >>> The JMSExpiration you set in the Marshaler is probably being overridden >>> by the TimeToLive value specified on the Producer. >>> Could you try adding the timeToLive="10000" attribute to your >>> <jms:provider/> endpoint to see if that yields the desired result? >>> >>> Regards, >>> >>> Gert >>> >>> >>> >>> razu programista wrote: >>> >>>> Hello everybody, >>>> I have a problem with removing unused messages from ActiveMQ queue. The >>>> problem is that when I peek messages which resides in ActiveMQ queue in >>>> jconsole, I see that their JMSExpiration property is set to 0. But I >>>> wrote >>>> my own jms provider marshaler which sets this property to my custom >>>> value. >>>> The code looks like: >>>> >>>> // marshaler >>>> >>>> import javax.jbi.messaging.MessageExchange; >>>> import javax.jbi.messaging.NormalizedMessage; >>>> import javax.jms.Message; >>>> >>>> import org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler; >>>> >>>> public class MyMarshaler extends DefaultProviderMarshaler { >>>> >>>> public void populateMessage(Message message, MessageExchange >>>> exchange, >>>> NormalizedMessage normalizedMessage) throws Exception { >>>> super.populateMessage(message, exchange, normalizedMessage); >>>> message.setJMSExpiration(10000); >>>> } >>>> } >>>> >>>> // jms xbean.xml config >>>> >>>> <jms:provider service="test:clientProviderService" >>>> endpoint="clientProviderEndpoint" >>>> destinationName="outClientQueue" >>>> marshaler="#myMarshaler" >>>> connectionFactory="#connectionFactory"/> >>>> >>>> <bean id="myMarshaler" class="com.test.MyMarshaler" /> >>>> >>>> >>>> >>>> Despite of setting JMSExpiration property in custom marshaler, >>>> JMSExpiration >>>> property is 0. Have you any idea what is wrong? >>>> >>>> >>>> >>> >>> >> >
