For destination D you still need to specify a real/concrete strategy, either individualDeadLetterStrategy or shared will work:
<policyEntry queue="D" producerFlowControl="true" memoryLimit="10mb"> <deadLetterStrategy> <individualDeadLetterStrategy processExpired="false"/> </deadLetterStrategy> </policyEntry> On 1 April 2010 10:40, Jan Dev <jan...@gmx.ch> wrote: > > Hi all > > I am using ActiveMQ 5.3.0. > I have lots of queues. Lets say I have queue A,B,C,D > > Queues A,B,C should have their own DLQ. Thus I configure the following: > > <policyEntry queue=">" producerFlowControl="true" memoryLimit="50mb"> > <deadLetterStrategy> > <individualDeadLetterStrategy queuePrefix="DLQ." > useQueueForQueueMessages="true" /> > </deadLetterStrategy> > </policyEntry> > > For Queue "D" I don't want to have DLQ. Expired Messages shall not be kept. > So I add the following: > <policyEntry queue="D" producerFlowControl="true" memoryLimit="10mb"> > <deadLetterStrategy processExpired="false" /> > </policyEntry> > > When I restart ActiveMQ to re-read the configuration it throws the > exception > below. > How do I configure different dead letter strategies for different queues? > > Many thanks for your help. > > Regards > Jan > > > ERROR: java.lang.Exception: > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in class > path resource [activemq.xml]: Cannot create inner bean '(inner bean)' of > type [org.apache.activemq.broker.region.policy.PolicyMap] while setting > bean > property 'destinationPolicy'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name '(inner bean)#2' defined in class path resource [activemq.xml]: > Cannot create inner bean 'policyEntry#922804' of type > [org.apache.activemq.broker.region.policy.PolicyEntry] while setting bean > property 'policyEntries' with key [2]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'policyEntry#922804' defined in class path resource > [activemq.xml]: Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert property > value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > java.lang.Exception: > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'org.apache.activemq.xbean.XBeanBrokerService#0' defined in class > path resource [activemq.xml]: Cannot create inner bean '(inner bean)' of > type [org.apache.activemq.broker.region.policy.PolicyMap] while setting > bean > property 'destinationPolicy'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name '(inner bean)#2' defined in class path resource [activemq.xml]: > Cannot create inner bean 'policyEntry#922804' of type > [org.apache.activemq.broker.region.policy.PolicyEntry] while setting bean > property 'policyEntries' with key [2]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'policyEntry#922804' defined in class path resource > [activemq.xml]: Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert property > value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:99) > at > > org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) > at > > org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:129) > at > > org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) > at > org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:79) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at org.apache.activemq.console.Main.runTaskClass(Main.java:251) > at org.apache.activemq.console.Main.main(Main.java:107) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at > org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) > at java.lang.Thread.run(Unknown Source) > Caused by: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'org.apache.activemq.xbean.XBeanBrokerService#0' > defined in class path resource [activemq.xml]: Cannot create inner bean > '(inner bean)' of type [org.apache.activemq.broker.region.policy.PolicyMap] > while setting bean property 'destinationPolicy'; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name '(inner bean)#2' defined in class path resource [activemq.xml]: > Cannot create inner bean 'policyEntry#922804' of type > [org.apache.activemq.broker.region.policy.PolicyEntry] while setting bean > property 'policyEntries' with key [2]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'policyEntry#922804' defined in class path resource > [activemq.xml]: Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert property > value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > at > > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) > at > > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > at > > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > at > > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) > at > > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) > at > > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) > at > > org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) > at > > org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) > at > > org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:96) > at > > org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:52) > at > > org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) > at > > org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) > at > > org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:115) > at > > org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:74) > ... 16 more > Caused by: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name '(inner bean)#2' defined in class path resource > [activemq.xml]: Cannot create inner bean 'policyEntry#922804' of type > [org.apache.activemq.broker.region.policy.PolicyEntry] while setting bean > property 'policyEntries' with key [2]; nested exception is > org.springframework.beans.factory.BeanCreationException: Error creating > bean > with name 'policyEntry#922804' defined in class path resource > [activemq.xml]: Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert property > value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:230) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:117) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:287) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:126) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:219) > ... 39 more > Caused by: org.springframework.beans.factory.BeanCreationException: Error > creating bean with name 'policyEntry#922804' defined in class path resource > [activemq.xml]: Initialization of bean failed; nested exception is > org.springframework.beans.TypeMismatchException: Failed to convert property > value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) > at > > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:219) > ... 49 more > Caused by: org.springframework.beans.TypeMismatchException: Failed to > convert property value of type [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy'; nested exception is > java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:391) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1289) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1250) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) > at > > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) > ... 53 more > Caused by: java.lang.IllegalArgumentException: Cannot convert value of type > [java.lang.String] to required type > [org.apache.activemq.broker.region.policy.DeadLetterStrategy] for property > 'deadLetterStrategy': no matching editors or conversion strategy found > at > > org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231) > at > > org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138) > at > > org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:386) > ... 57 more > > > > > > > -- > View this message in context: > http://old.nabble.com/Different-deadLetterStrategies-for-different-queues-tp28106200p28106200.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > -- http://blog.garytully.com Open Source Integration http://fusesource.com