title: RabbitMQ channel creation guidelines
body: <p>I'm writing a simple class that my apps will use to send and receive messages using RabbitMQ.
  I've read as many how-tos, blog posts, white papers and the likes about RabbitMQ as I could find.
  Most of the examples have the connection and channel wrapped in a <code>using</code> block, and contradict it by saying that you should probably implement them as a singleton.
  Specifically, regarding the channel, I've seen comments saying that you shouldn't have more than a single thread using a single channel at the same time.</p>
  
  <p>I'm writing my library in C#. It's a singleton having a static connection connected on first instantiation.</p>
  
  <p>I thought about doing the same for the channel, but I intend to use the same library to allow publishing/subscribing to multiple exchanges/queues. Both publishing and subscribing might be done from multiple threads.</p>
  
  <p>And finally my question:
  How should I implement channel creation?
  Per message?
  Have each consumer have a unique private channel, publisher sync access to a single unique channel?
  You catch my drift.
  Please keep in mind that I'm intending to use a single server, with several dozens of consumers/publishers, not much more.</p>