Thanks Tim for the detailed email.  When I do failover I see below exception in 
our app logs.

org.apache.activemq.transport.failover.FailoverTransport          Transport 
(tcp://hdp132.lab1.ariba.com:61616) failed, attempting to automatically 
reconnect java.io.EOFException: null
        at java.io.DataInputStream.readInt(DataInputStream.java:392)
        at 
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:267)
        at 
org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:240)
        at 
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:232)
        at 
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)

The message redelivery attempt is default  in the activemq conf, so it is 6 
times. 


I just send 1 message to the queue ,receive it and don't ack it ,then do 
failover . There is a thread which listens for receiving messages in the queue 
,I don't see any exception in there .  So not sure  from where the transport 
exception is thrown. 
In the produce send  , receive and ack code the JMS 
Is there a way to track failover happened.  May be some sort of listener ,then 
the session can be recovered.

Regards,
Rajeswari

-----Original Message-----
From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim Bain
Sent: Thursday, April 07, 2016 8:53 PM
To: ActiveMQ Users <users@activemq.apache.org>
Subject: Re: MasterSlave config ActiveMQ

I apologize, I misunderstood what you meant by "I made sure the messages
will not be acknowledged."

When either the broker or a consumer goes down while a consumer is actively
consuming a message, the broker will consider that a filed delivery and try
to redeliver the message.  The maximumRedeliveries property of the
Redelivery Policy (http://activemq.apache.org/redelivery-policy.html)
controls how many times the message will be redelivered before being put
into the DLQ.  The default value is 6; is this the value you're using, or
have you explicitly set a different value?  With the default value of 6,
your consumer should fail over to the new master, the message should be
redelivered (because this is redelivery attempt #1 and that's less than 6),
and your consumer should start processing the message for the second time.
As long as that doesn't throw any exceptions or fail in any other way (have
you confirmed this?), the second redelivery attempt should eventually
result in a successful processing of the message.

However, it sounds like that's not happening for you, and
http://stackoverflow.com/questions/8576821/cant-get-activemq-to-resend-my-messages#comment35122357_8576821
seems to indicate that when using INDIVIDUAL_ACKNOWLEDGE mode, if you don't
close the Connection or recover() the Session, the messages will be
considered duplicates and ignored by the consumer.  I haven't worked with
INDIVIDUAL_ACKNOWLEDGE mode myself; can anyone else on the list shed more
light on whether that comment is accurate?

If so, it would sound like clients who use INDIVIDUAL_ACKNOWLEDGE mode
shouldn't use the failover transport, because they need the connection to
die so they can recreate it.  If that were true, I'd expect we'd have a
warning somewhere on the wiki saying that those two features aren't
compatible with one another, but I haven't seen one in my searching this
evening...

Tim

On Thu, Apr 7, 2016 at 12:02 PM, Natarajan, Rajeswari <
rajeswari.natara...@sap.com> wrote:

> I am trying to understand, sorry if I sound , I don't believe you or
> skeptic. I have an application with the broker url defined as below  (with
> shared file system)
>
> failover:(tcp://<hostname1>:61616,tcp://<hostname2>:61616.
>
> When I failover I see the web console and see one consumer on the fail
> over host ,as the application is having a consumer and got a message ,but
> did not acknowledge (delaying it on purpose for a use case) during
> failover.. In our use case, there will be messagse sent to the queue and we
> do some processing ,but not acknowledging the messages ,unless we get a
> condition satisfied ,which might take some time. So when a failover happens
> within that time ,all such messages will be moved to DLQ?
> Is there any way to  have them in the same state as before in  the fail
> over host.
>
> Thank you,
> Rajeswari
>
> -----Original Message-----
> From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim Bain
> Sent: Thursday, April 07, 2016 5:41 AM
> To: ActiveMQ Users <users@activemq.apache.org>
> Subject: RE: MasterSlave config ActiveMQ
>
> Quoting from what I originally wrote you: "or if there's a consumer
> on the failover host that tries and fails to consume them."  Consuming a
> message but not acking it == failing to consume it.  The failover
> functionality works, despite your apparent skepticism; retry your test with
> no consumers if you don't believe me.
>
> Tim
> On Apr 7, 2016 5:22 AM, "Natarajan, Rajeswari" <
> rajeswari.natara...@sap.com>
> wrote:
>
> > FYI using non-transactional session with
> > ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE
> >
> > Rajeswari
> >
> > -----Original Message-----
> > From: Natarajan, Rajeswari [mailto:rajeswari.natara...@sap.com]
> > Sent: Thursday, April 07, 2016 3:57 AM
> > To: users@activemq.apache.org
> > Subject: RE: MasterSlave config ActiveMQ
> >
> > Thank you. But in my case I am sure the messages have not reached
> > JMSExpiration date.
> >
> > I assume there will be a consumer on the failover host ,once the failover
> > happens. But when I tested, I made sure the messages will not be
> > acknowledged . Still  I see consistently the pending/enqueued messages go
> > DLQ upon failover and don't appear in the original Queue as enqueued.
> > Am I missing something
> >
> > Rajeswari
> >
> > -----Original Message-----
> > From: tbai...@gmail.com [mailto:tbai...@gmail.com] On Behalf Of Tim Bain
> > Sent: Wednesday, April 06, 2016 10:26 PM
> > To: ActiveMQ Users <users@activemq.apache.org>
> > Subject: Re: MasterSlave config ActiveMQ
> >
> > Only if they had reached their JMSExpiration date, or if there's a
> consumer
> > on the failover host that tries and fails to consume them.  Otherwise,
> they
> > will continue to be available on the queue.
> >
> > On Wed, Apr 6, 2016 at 5:03 PM, Natarajan, Rajeswari <
> > rajeswari.natara...@sap.com> wrote:
> >
> > > Hi,
> > >
> > > I am testing activemq master slave config using shared file system.
> > >
> > > 1) I issued 1 message to a queue and I saw that in both pending message
> > > count and enqueued count.  The message was not dequeued.
> > >
> > > 2)Killed the master ,the secondary took over ,in secondary's
> webconsole I
> > > see that
> > >
> > > Messages dequeued as 1
> > >
> > > And in the ActiveMQ.DLQ  I see 1 pending message and 1 enqueued
> message.
> > >
> > >
> > > So in case of failover ,the pending/unacknowledged messages go to DLQ
> and
> > > never get processed ?
> > >
> > >
> > > Thank you,
> > > Rajeswari
> > >
> >
>

Reply via email to