When a consumer receives a message in RabbitMQ, and the Connection drops to that consumer, the server may choose to close that connection to the client, and requeue the work that it hadn't acked up to that point. However, the original client may continue to process that message and complete any work it needs as a result of it. This means, if left unchecked, two different clients may produce and commit the same messages work, duplicating the processing power and results of this work, which in some cases can be a problem.
Is there a recommended (hopefully built in) pattern for dealing with this in RabbitMQ without necessarily hand rolling a solution?