Own dead letter queue
andreyt Oct 31, 2006 12:39 PMI want to write erroneous messages in own dead letter queue (sns/DLQ).
For this purpose I use the following code:
ejb-jar.xml:
<ejb-jar> <description>HearerMDB</description> <display-name>HearerMDB</display-name> <enterprise-beans> <message-driven> <ejb-name>HearerMDB</ejb-name> <ejb-class>com.hearer.Hearer</ejb-class> <message-destination-type>javax.jms.Queue</message-destination-type> <activation-config> <activation-config-property> <activation-config-property-name>MaxPoolSize</activation-config-property-name> <activation-config-property-value>6</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>providerAdapterJNDI</activation-config-property-name> <activation-config-property-value>java:/SnsJMSProvider</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> </ejb-jar>
jboss.xml
<jboss> <enterprise-beans> <message-driven> <ejb-name>HearerMDB</ejb-name> <destination-jndi-name>queue/interlayC</destination-jndi-name> <configuration-name>Standard2 Message Driven Bean</configuration-name> <invoker-bindings> <invoker> <invoker-proxy-binding-name>sintel-message-driven-bean</invoker-proxy-binding-name> </invoker> </invoker-bindings> </message-driven> </enterprise-beans> <invoker-proxy-bindings> <invoker-proxy-binding> <name>sintel-message-driven-bean</name> <invoker-mbean>sintel</invoker-mbean> <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory> <proxy-factory-config> <JMSProviderAdapterJNDI>java:/SnsJMSProvider</JMSProviderAdapterJNDI> <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI> <CreateJBossMQDestination>false</CreateJBossMQDestination> <MinimumSize>1</MinimumSize> <MaximumSize>15</MaximumSize> <KeepAliveMillis>30000</KeepAliveMillis> <MaxMessages>1</MaxMessages> <MDBConfig> <ReconnectIntervalSec>10</ReconnectIntervalSec> <DLQConfig> <DestinationQueue>queue/sns/DLQ</DestinationQueue> <MaxTimesRedelivered>10</MaxTimesRedelivered> <TimeToLive>0</TimeToLive> </DLQConfig> </MDBConfig> </proxy-factory-config> </invoker-proxy-binding> </invoker-proxy-bindings> <container-configurations> <container-configuration> <container-name>Standard2 Message Driven Bean</container-name> <call-logging>true</call-logging> <invoker-proxy-binding-name>sintel-message-driven-bean</invoker-proxy-binding-name> <container-interceptors> <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor> <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor> <interceptor>org.jboss.ejb.plugins.RunAsSecurityInterceptor</interceptor> <!-- CMT --> <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor> <interceptor transaction="Container">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor> <interceptor transaction="Container">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor> <!-- BMT --> <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor> <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT</interceptor> <interceptor transaction="Bean">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor> <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor> </container-interceptors> <instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool> <instance-cache></instance-cache> <persistence-manager></persistence-manager> <container-pool-conf> <MaximumSize>100</MaximumSize> </container-pool-conf> </container-configuration> </container-configurations> </jboss>
But messages are still kept in standard queue (queue/DLQ).
What is made incorrectly?