title: Rabbitmq: how worker can "ignore" a message and let an other worker treating it
body: <p>Here's my current architecture</p>
  
  <p>I have a bunch of IoT devices, that connects through raw duplex persistent TCP to 1 instances of my "worker" that is connected to a RabbitMQ Queue</p>
  
  <p>My publisher publishes some messages that look like that </p>
  
  <pre><code>{
     "iot_device_name" : "A",
     "command" : "reboot"
  }
  </code></pre>
  
  <p>The worker is then able to map the <code>iot_device_name</code> to the TCP socket.</p>
  
  <p>All is working nice, but if we want to add HA and to scale out a bit, it would be better to have 4 instances of the worker. Load balancing the TCP question is not a problem (with HaProxy or Nginx).</p>
  
  <p>Now the problem is on how to split the load on the Queue part, as the list of IoT devices handled by a worker is dynamic (i.e a device could disconnect and reconnect to an other worker)</p>
  
  <p><strong>So is there a way for a worker to say: "Hmmm no I can't treat this message because I don't know this device, give me an other" so that an other worker can then take it and handle it ?</strong></p>
  
  <p>Other information that may be of help:</p>
  
  <ul>
  <li>the workers are all in the same network, that is also the same than the publisher</li>
  <li>the numbers of workers is not dynamic and even if we extrapolate the number of devices for the next years, 8 workers would takes us VERY FAR, as it simply route message/transcode messages, so their cpu load is ridiculous.</li>
  </ul>