I just discovered a very annoying quirk of using high availability queues. I started my consuming app using the high availability query string parameter (?ha=true) so the queues would be created on multiple nodes before I started my publishers. I naively assumed that this query string wouldn't be necessary when subsequently subscribing my consuming app. Not so.
repro:
1. subscribe to queue rabbitmq://localhost/MyHAQueue?ha=true by starting consuming app and then stop app.
2. start app again to same URI without the "ha=true" query string (i.e. rabbitmq://localhost/MyHAQueue).
3. watch the errors roll in ("Consumer Exception Exposed" is the log message)
No new queue is created and it appears that you can't subscribe to the existing HA queue without specifying the ha query string.
As a side note, I am using NLog for logging and have specified that MT use NLog (and I see MT logging) but the "Consumer Exception Exposed" message does not come with any exception info at all and I verified that I was logging exception deatails (I was logging an intentional exception (not thrown) that shows in the log output). I have a recent clone of the MassTransit project, and found the line that logs "Consumer Exception Exposed". The exception is passed to the correct Nlog LogException methods in the NLog adapter in MT so that all looks okay, but still no exception details. Double bonus annoying points for only having this happen in production where i didn't have debugging tools, access etc. It looks like the NLog adapter has been doing things correctly from its first implementation so I don't know why I'm not getting any details and the exception is lying anyway -- this was not an exception escaping from my consumer.
Anyway, hope this helps someone.
Cheers.