<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi<br>
<br>
On 02/04/2013 07:54 AM, Arizanov wrote:
<blockquote
cite="mid:d2777947-5cc3-4ee6-afe4-45aca918604f@googlegroups.com"
type="cite">Hi guys,
<div><br>
</div>
<div>We are doing some realtime replication of critical data and
there may be cases when the RabbitMQ cluster is unaccessible.
E.g. the cluster is being patched or there just a network
connectivity issue. On one side we can have local rabbitmq
installations inside the webserver and shovels, which transmit
the data to the cluster. On the other side, we can develop our
own database and a service over it, which is scheduled to
transmit the messages to the cluster when it becomes available.
So is using the 'shovel' the best practise? Does the statement </div>
<div>"A shovel behaves like a well-written client application,
which connects to its source and destination, reads and writes
messages, and copes with connection failures." from <a
moz-do-not-send="true"
href="http://www.rabbitmq.com/shovel.html">http://www.rabbitmq.com/shovel.html</a>
means so?</div>
<div><br>
</div>
</blockquote>
<br>
Reading from ..., <br>
<br>
"Whereas federation aims to mirror messages from one exchange to
another (with optimisations to ensure that messages are not
forwarded unless needed), the shovel simply consumes messages from a
queue on one broker, and forwards them to an exchange on another. "<br>
<br>
So with the Shovel, because you "Choose Availability and Partition
Tolerance from the <a
href="http://en.wikipedia.org/wiki/CAP_theorem">CAP theorem</a>",
there is the possibility that you'll end up with duplicate messages.
You can tweak the 'republish' semantics to compensate for this if
you like, and of course yes the Shovel will attempt to reconnect
(and this is also configurable) on connection failure.<br>
<br>
You might want to consider Federation if you don't need to low level
of control that the Shovel offers.<br>
<br>
Cheers,<br>
Tim<br>
</body>
</html>