Hi all,
I have following scenario:
1. SMTP server receives email, creates Java class representation and puts it
into EMAIL queue.
2. Queue is persistant, using configuration below.
3. I have 10+ consumers consuming from EMAIL queue in transaction mode. If
they fail to process email (route it to other system), message is reverted.
Retry scheme is to try again every 2 minutes indefinitelly (for test
purposes).
The problem starts when ActiveMq store is filled up (outage on network,
consumers are not able to process messages and revert all of them). Producer
on SMTP server gets blocked, which is fine.
My problem is that once network problem is resolved and consumers start to
handle the queue again, not all messages are processed and always a few
thousands are left behind and never consumed. After I restart ActiveMq the
messages are finally processed and consumed.
Is this a bug on ActiveMq? Or is this a configuration issue?
I tried to experiment with
<policyEntry queue="EMAIL" storeUsageHighWaterMark="95" />
But no luck, behaves the same
Thanks for response
Matous
My configuration:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true"
memoryLimit="16 mb" >
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true"
memoryLimit="16 mb" />
<policyEntry queue="EMAIL" storeUsageHighWaterMark="95" />
<policyEntry queue="ActiveMQ.DLQ"
storeUsageHighWaterMark="20" />
</policyEntries>
</policyMap>
</destinationPolicy>
<systemUsage>
<systemUsage sendFailIfNoSpaceAfterTimeout="1000">
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="33 mb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="33 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>
I have following scenario:
1. SMTP server receives email, creates Java class representation and puts it
into EMAIL queue.
2. Queue is persistant, using configuration below.
3. I have 10+ consumers consuming from EMAIL queue in transaction mode. If
they fail to process email (route it to other system), message is reverted.
Retry scheme is to try again every 2 minutes indefinitelly (for test
purposes).
The problem starts when ActiveMq store is filled up (outage on network,
consumers are not able to process messages and revert all of them). Producer
on SMTP server gets blocked, which is fine.
My problem is that once network problem is resolved and consumers start to
handle the queue again, not all messages are processed and always a few
thousands are left behind and never consumed. After I restart ActiveMq the
messages are finally processed and consumed.
Is this a bug on ActiveMq? Or is this a configuration issue?
I tried to experiment with
<policyEntry queue="EMAIL" storeUsageHighWaterMark="95" />
But no luck, behaves the same
Thanks for response
Matous
My configuration:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true"
memoryLimit="16 mb" >
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="1000"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true"
memoryLimit="16 mb" />
<policyEntry queue="EMAIL" storeUsageHighWaterMark="95" />
<policyEntry queue="ActiveMQ.DLQ"
storeUsageHighWaterMark="20" />
</policyEntries>
</policyMap>
</destinationPolicy>
<systemUsage>
<systemUsage sendFailIfNoSpaceAfterTimeout="1000">
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="33 mb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="33 mb"/>
</tempUsage>
</systemUsage>
</systemUsage>