title: How to redirect message in competing consumer scenario
body: <p>I'm using <em>MassTransit</em> but I think this is a conceptual problem that would apply to any transport abstraction/bus messaging in general (RabbitMq, SQS, NServiceBus, etc.).</p>
  <p>I have a scenario where there could be competing consumers (i.e: 2 instances of the same microservice receiving messages from the same queue and therefore &quot;stealing&quot; messages from each other).</p>
  <p>The problem is that a microservice reacts to a message (i.e: <code>ClientSubscribed</code>) by opening a websocket with a third party server, so a specific instance gets attached to a specific third party's channel.</p>
  <p>When another message is consumed (e.g: <code>ClientUnsubscribed</code>) the microservice must terminate/disconnect the websocket.</p>
  <p>Now, the problem is that microservice A is the one receiving <code>ClientSubscribed</code> and opening the long lasting websocket with the third party, and microservice B is the one that receives the <code>ClientUnsubscribed</code>, the websocket termination would not take place (there is no websocket open at microservice B).</p>
  <p><strong>What are the options for these kind of scenarios where we mix event-driven with state and horizontal scalability as in competing consumers?</strong></p>
  <p>I could throw an exception, and the message would be enqueue again, but maybe it gets redelivered to the same consumer and it keeps throwing exceptions until the message is consumed by the &quot;proper&quot; consumer. Is there any alternative?</p>