Messages don't get redelivered
s.goetz Aug 23, 2012 11:11 AMHi all,
I am just starting to use hornetq and have no experience with mesage queuing in general. By the time hornetq is just fine running as a windows servive on my Windows 7 machine.
But I am facing a strange behavior. With my configuration I intended to have infinite redeliveries and a delay of 5 seconds. But what I am actually having is something different.
Here is my configuration file:
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<paging-directory>${user.home}/.hornetq/${data.dir:data}/paging</paging-directory>
<bindings-directory>${user.home}/.hornetq/${data.dir:data}/bindings</bindings-directory>
<journal-directory>${user.home}/.hornetq/${data.dir:data}/journal</journal-directory>
<journal-min-files>10</journal-min-files>
<large-messages-directory>${user.home}/.hornetq/${data.dir:data}/large-messages</large-messages-directory>
<connectors>
<connector name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:localhost}"/>
<param key="port" value="${hornetq.remoting.netty.port:5445}"/>
</connector>
<connector name="netty-throughput">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:localhost}"/>
<param key="port" value="${hornetq.remoting.netty.batch.port:5455}"/>
<param key="batch-delay" value="50"/>
</connector>
</connectors>
<acceptors>
<acceptor name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:localhost}"/>
<param key="port" value="${hornetq.remoting.netty.port:5445}"/>
</acceptor>
<acceptor name="netty-throughput">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:localhost}"/>
<param key="port" value="${hornetq.remoting.netty.batch.port:5455}"/>
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</acceptor>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="createDurableQueue" roles="admin"/>
<permission type="deleteDurableQueue" roles="admin"/>
<permission type="createTempQueue" roles="admin"/>
<permission type="deleteTempQueue" roles="admin"/>
<permission type="send" roles="admin"/>
<permission type="consume" roles="admin"/>
<permission type="manage" roles="admin"/>
</security-setting>
</security-settings>
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<max-delivery-attempts>-1</max-delivery-attempts>
<redelivery-delay>5000</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>BLOCK</address-full-policy>
</address-setting>
</address-settings>
</configuration>
No the behabior is as follows. I start up my application server and create a consumer for a certain queue. This queue contains several messages already. So each of the messages is delivered once. Since I rollback the session after I have consumed a message it is put back into the queue.
Here is the log listing the 21 messages' ids:
FATAL 2012-08-23 17:07:37,237 [pool-16-thread-1][] root - 5954
FATAL 2012-08-23 17:07:38,249 [pool-16-thread-1][] root - 5966
FATAL 2012-08-23 17:07:39,252 [pool-16-thread-2][] root - 5984
FATAL 2012-08-23 17:07:40,255 [pool-16-thread-1][] root - 6016
FATAL 2012-08-23 17:07:41,257 [pool-16-thread-3][] root - 6048
FATAL 2012-08-23 17:07:42,260 [pool-16-thread-3][] root - 6080
FATAL 2012-08-23 17:07:43,263 [pool-16-thread-3][] root - 6112
FATAL 2012-08-23 17:07:44,266 [pool-16-thread-3][] root - 6144
FATAL 2012-08-23 17:07:45,268 [pool-16-thread-3][] root - 6176
FATAL 2012-08-23 17:07:46,271 [pool-16-thread-3][] root - 6208
FATAL 2012-08-23 17:07:47,274 [pool-16-thread-3][] root - 6240
FATAL 2012-08-23 17:07:48,277 [pool-16-thread-3][] root - 6272
FATAL 2012-08-23 17:07:49,279 [pool-16-thread-3][] root - 6304
FATAL 2012-08-23 17:07:51,532 [pool-16-thread-3][] root - 6336
FATAL 2012-08-23 17:08:01,295 [pool-16-thread-3][] root - 6368
FATAL 2012-08-23 17:08:02,298 [pool-16-thread-3][] root - 6400
FATAL 2012-08-23 17:08:03,301 [pool-16-thread-3][] root - 6432
FATAL 2012-08-23 17:08:04,303 [pool-16-thread-3][] root - 6464
FATAL 2012-08-23 17:08:05,305 [pool-16-thread-3][] root - 6496
FATAL 2012-08-23 17:08:06,308 [pool-16-thread-3][] root - 6528
FATAL 2012-08-23 17:08:07,311 [pool-16-thread-3][] root - 6560
As I understand it, when rolled back, a message comes back on top of the queue and should be redelivered after the redelivery delay.
Has anyone faced a similar behavior so far? For sure I am making some stupid newbie mistake...
Regards,
Sebastian