activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Bain <tb...@alumni.duke.edu>
Subject Re: Message redelivery when producer broker killed (without persistence)
Date Fri, 13 Oct 2017 12:44:22 GMT
I agree.

The fundamental problem you're hitting is that in ActiveMQ 5.x, a message
can exist in only one active broker, so networks of brokers move messages
around via store-and-forward, as you described. For a message to be
available to multiple brokers at the same time (such that it would still be
available if a broker went down) you would need active-active clustering,
which ActiveMQ 5.x doesn't support.

However, ActiveMQ Artemis does support that feature, so you might want to
consider switching to it to better support your use case.

Tim

On Oct 12, 2017 8:01 PM, "Justin Bertram" <jbertram@apache.org> wrote:

> > So, am I just missing something or are virtual topics not a solution?
>
> I don't think virtual topics are a solution to your problem.
>
>
> Justin
>
> On Thu, Oct 12, 2017 at 6:08 PM, pypen <pypen@gmx.net> wrote:
>
> > Hi,
> > I am trying to solve a problem and I am wondering if Virtual Topics
> provide
> > a solution for the problem.
> > I have 2 brokers in a network of brokers.
> > Broker A has a producer to VirtualTopic.Test and a local consumer
> > Consumer.A.VirtualTopic.Test (lets call it consumer A).
> > Broker B has a local consumer Consumer.A.VirtualTopic.Test (lets call it
> > consumer B).
> > (All clients [producers and consumers] are connected to the local brokers
> > only)
> >
> > Broker A and Broker B are both running, consumer A is running, consumer B
> > is
> > not running.
> >
> > I want to be able to kill consumer A and broker A entirely (pull the
> plug),
> > start consumer B and redeliver/process all messages that were not
> > acknowledged by consumer A on consumer B.
> >
> > What I thought would happen (a very naive assumption) is that when a
> > message
> > is produced on the VirtualTopic.Test topic, both brokers will receive the
> > message and when it is acknowledged by consumer A consumer B will not
> > receive it (basically that the topics are treated as separate topics, but
> > the queues as one). But the way it seems is that the message is handed
> from
> > broker A to consumer A, if consumer A does not acknowledge the message is
> > handed back to the broker A, then handled over to broker B and then to
> > consumer B. The problem is that when broker A is killed, that message is
> > lost.
> >
> > I tried also to use a statically included destination
> (VirtualTopic.Test),
> > which seems to send copies of the messages to consumer A and consumer B
> so
> > that once consumer B starts, it will receive all messages (that did not
> > expire), even the ones that were acknowledged already by consumer A.
> (when
> > both consumers are running all messages are delivered to both consumers)
> >
> > So, am I just missing something or are virtual topics not a solution?
> >
> >
> >
> >
> >
> > --
> > Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-
> > f2341805.html
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message