Has there been any work on JBossMQ message redelivery recently?
I have an MDB, which has all of its methods set to NotSupported, using a
custom container-configuration, which only allows one message to be
processed at a time (jboss dd attached).
It processes a message, which could take longer than the TX timeout, so I it
can not run inside of a TX.
I am still getting warnings:
WARN org.jboss.tm.TxCapsule [Thread-8] () - Transaction XidImpl
[FormatId=257, GlobalId=eng-ecr4a//0, BranchQual=] timed out.
status=STATUS_ACTIVE
For each warning the message being processes seems to reapear back into the
queue, though Message.getJMSRedelivered() will never return true.
This is running in JBoss pre-3.0, which was built very shortly before the RH
bit were commited, so it may be possible that this have been fixed in newer
versions? I did not seen any change logs, specific to this, so I think that
it might be a bug in HEAD too.
So, the first question is why does an MDB with NotSupported cause TX
timeouts?
Second, why does a message get redelivered to my MDB, but does not have its
getJMSRedelivered() set to true?
--jason
<?xml version="1.0"?>
<!-- $Id: //depot/eng/does/main/src/metadata/ejb/workerinvoker-jboss.xml#9 $ -->
<jboss>
<secure>false</secure>
<!-- ================================================================= -->
<!-- Container Configurations -->
<!-- ================================================================= -->
<container-configurations>
<container-configuration>
<container-name>Custom MDB</container-name>
<call-logging>false</call-logging>
<container-invoker>org.jboss.ejb.plugins.jms.JMSContainerInvoker</container-invoker>
<container-interceptors>
<interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
<interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor>
<!-- CMT -->
<interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor>
<interceptor transaction="Container" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</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" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</interceptor>
</container-interceptors>
<instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool>
<instance-cache></instance-cache>
<persistence-manager></persistence-manager>
<transaction-manager>org.jboss.tm.TxManager</transaction-manager>
<container-invoker-conf>
<JMSProviderAdapterJNDI>DefaultJMSProvider</JMSProviderAdapterJNDI>
<ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI>
<MaximumSize>1</MaximumSize>
<MaxMessages>1</MaxMessages>
<Optimized>True</Optimized>
</container-invoker-conf>
<container-pool-conf>
<MaximumSize>50</MaximumSize>
<MinimumSize>5</MinimumSize>
</container-pool-conf>
</container-configuration>
</container-configurations>
<!-- ================================================================ -->
<!-- Resource Managers -->
<!-- ================================================================ -->
<resource-managers>
<resource-manager>
<res-name>QueueConnectionFactory</res-name>
<!-- HACK temporary-->
<res-jndi-name>@expnet.jms.provider.shared.url@[EMAIL PROTECTED]@</res-jndi-name>
<!-- <res-jndi-name>java:/JmsXA</res-jndi-name> -->
</resource-manager>
<resource-manager>
<res-name>WorkResponseQueue</res-name>
<res-jndi-name>@expnet.jms.provider.shared.url@/queue/WorkResponseQueue</res-jndi-name>
</resource-manager>
</resource-managers>
<!-- ================================================================= -->
<!-- Enterprise Beans -->
<!-- ================================================================= -->
<enterprise-beans>
<!-- =============================================================== -->
<!-- WorkerInvoker -->
<!-- =============================================================== -->
<message-driven>
<ejb-name>WorkerInvoker</ejb-name>
<configuration-name>Custom MDB</configuration-name>
<destination-jndi-name>queue/WorkRequestQueue</destination-jndi-name>
<!-- <mdb-user>workerinvoker</mdb-user> -->
<!-- <mdb-passwd>workerinvoker</mdb-passwd> -->
<resource-ref>
<res-ref-name>jms/QueueConnectionFactory</res-ref-name>
<resource-name>QueueConnectionFactory</resource-name>
</resource-ref>
<resource-ref>
<res-ref-name>jms/WorkResponseQueue</res-ref-name>
<resource-name>WorkResponseQueue</resource-name>
</resource-ref>
</message-driven>
</enterprise-beans>
</jboss>