[rabbitmq-discuss] Ruby Gem with Unicorn server
Michael Klishin
michael.s.klishin at gmail.com
Tue Jan 17 19:42:10 GMT 2012
Mark:
> Question... typically only 1 channel is needed per application right?
For Web apps that just publish messages and never consume them, yes.
For consumer applications, you almost always end up with multiple channels because
channels should not be shared between threads and error handling in AMQP 0.9.1 is per-channel (connection-level exceptions usually
indicate misconfiguration or serious client bugs). Another common reason for separation is to be able to see separate message flows
in the RabbitMQ Web UI.
You can always start with 1 channel (this is why AMQP.channel accessor is there, so you don't have to decide where to assign it) and add more,
often moving to this technique:
http://rubyamqp.info/articles/getting_started/#integration_with_objects
but It is not uncommon to see publishing being done as
AMQP.channel.default_exchange.publish(payload, …)
initially. This is not discouraged.
Channels on the wire are just integers every message carries so they are very cheap to create and maintain in terms of resources,
both for clients and RabbitMQ itself.
MK
http://github.com/michaelklishin
http://twitter.com/michaelklishin
More information about the rabbitmq-discuss
mailing list