Thanks for yours answers,
I tried to configure the embedded activemq with activemq.xml as describe
here :
http://tomee.apache.org/jms-resources-and-mdb-container.html
To begin, 2 things :
- there is a dead link in this page (link to xbean-spring-3.9.jar)
- i had to add more libraries than described because of classeNotFound
exception : spring-expression-3.2.9.jar and activemq-spring-5.10.0.jar
So now my configuration is that one :
*tomee.xml*
/<tomee>
(...)
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig =
xbean:file:D:/apache-tomee-1.7.0-plus/conf/activemq.xml
ServerUrl = tcp://localhost:61616
</Resource>
<Resource id="MyJmsConnectionFactory"
type="javax.jms.QueueConnectionFactory">
ResourceAdapter = MyJmsResourceAdapter
</Resource>
<Container id="MyJmsMdbContainer" ctype="MESSAGE">
ResourceAdapter = MyJmsResourceAdapter
</Container>
<Resource id="MyQueue1" type="javax.jms.Queue">
destination = MyQueue1
</Resource>
</tomee>/
*activemq.xml*
/<beans ...>
<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true"
start="true" brokerName="PMBrokerConfXml" schedulerSupport="true"
persistent="true">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" producerFlowControl="true" >
<deadLetterStrategy>
<individualDeadLetterStrategy
queuePrefix="ERROR."
useQueueForQueueMessages="true" />
</deadLetterStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
<plugins xmlns="http://activemq.apache.org/schema/core">
<redeliveryPlugin fallbackToDeadLetter="true"
sendToDlqIfMaxRetriesExceeded="true">
<redeliveryPolicyMap >
<redeliveryPolicyMap>
<defaultEntry>
*<redeliveryPolicy
initialRedeliveryDelay="5000"
redeliveryDelay="3000"
maximumRedeliveries="3"
maximumRedeliveryDelay="14400000"
backOffMultiplier="2"
useExponentialBackOff="true"/>*
</defaultEntry>
</redeliveryPolicyMap>
</redeliveryPolicyMap>
</redeliveryPlugin>
</plugins>
<persistenceAdapter>
<kahaDB directory="D:/apache-tomee-1.7.0-plus/jmsdata/kahadb"
indexCacheSize="20000" ignoreMissingJournalfiles="true"
checkForCorruptJournalFiles="true" checksumJournalFiles="true"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616" />
</transportConnectors>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="64 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans"
class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>
</broker>
</beans>/
What's working :
- i can send message to activemq
- i can see theses messages in activemq webconsole
- i can consumme message
- When i send a "transaction rollback" during message consuming, after 6
try, messages are sent to "ERROR.[QueueName]" queue
What's not working :
- all the redeliveryPolicy is not used...
This is the dlqDeliveryFailureCause i can see in the error queue on a
message:
/java.lang.Throwable: Exceeded redelivery policy limit:RedeliveryPolicy
{destination = null, collisionAvoidanceFactor = 0.15, maximumRedeliveries =
6, maximumRedeliveryDelay = -1, initialRedeliveryDelay = 1000,
useCollisionAvoidance = false, useExponentialBackOff = false,
backOffMultiplier = 5.0, redeliveryDelay = 1000}, cause:null/
None of the redeliveryPolicy attribute is used.
Did i make any configuration mistake?
Clue : redeliveryPlugin is used. If i set "fallbackToDeadLetter" and
"sendToDlqIfMaxRetriesExceeded" to false, message in errors disappears (they
are not put into an error queue).
Thanks in advance
PS : i don't understand why i need to use a configuration file instead of
using configuration into tomee.xml.
--
View this message in context:
http://tomee-openejb.979440.n4.nabble.com/TomEEplus-Activemq-RedeliveryDelay-not-working-tp4673241p4673348.html
Sent from the TomEE Users mailing list archive at Nabble.com.