Marco,

thanks for having time for looking at it!


Marco Buss wrote:
> 
> Be aware of mMessagesRecieved > lMessagesSent
> 
Yes, sorry for that. It has to be '>='!



> The problem in your code is the closing and creating of a new consumer. If
> you close the old one, he had not enough time to send the ack for the last
> message. So the broker thinks the Message is lost or there are another
> problem and he sneds the message twice to the new consumer.
> 
> I have insert a little break after the closing of the consumer before the
> new consumer is created. After that all works like you expected.
> 
But is this the correct way? I mean, to make just a little pause after
closing isn't a nice way, is it? I can't imagine, that the
ActiveMQ-developers want this to be done by a user...



> Another way is to say explicit the no ack is needed. To do that change
> your connector.
> mConnFact = new ActiveMQConnectionFactory(DEFAULT_URL);
>       ((ActiveMQConnectionFactory)mConnFact).setAlwaysSessionAsync(true);
>       ((ActiveMQConnectionFactory)mConnFact).setUseAsyncSend(true);
>       ((ActiveMQConnectionFactory)mConnFact).setDispatchAsync(true);
> I`m not shure if you need all the three. Try it out. A have also changed
> the consumer a little bit for that.
> mJMSSession = mConnector.lookupConnection().createSession(false,
>                                       Session.AUTO_ACKNOWLEDGE);
> also i have rmoved the commit(); because it is not needed with
> AUTO_ACKNOWLEDGE
> 
No, thats no option! We do use transactions and don't want to change it!

Thanks for the reply, I'll give the pause after closing one consumer a
chance but I'm not happy with it!

Cheers,
 Kevin
-- 
View this message in context: 
http://www.nabble.com/Closing-a-consumer-create-more-messages-than-sent-tp17602690s2354p17691572.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to