Glen,
There aren't any specific guidelines about connections vs channels.
Depending on the application, it may be more convenient to use
multiple connections or channels. Use what is more convenient.
Of course, if possible you should reduce number of
connections - connections consume constrained resources
(file descriptors).
Having said that there is one particular case when you could
benefit from having multiple connections.
In a situation when RabbitMQ runs of memory (high memory
watermark), it will stop accepting new messages. But due to the
limitations of AMQP protocol, it can't be done on per-channel
basis - a full connection will be stopped in such case.
To rephrase - when rabbit runs out of memory the connections
on which messages are being published will be temporarily
throttled. You won't be able to do anything on that connection
until rabbit recovers - that includes consuming messages.
So, if you wish to be shielded against this situation, you
may want to keep publishers on a separate connection
than consumers. That will ensure that even in the
out-of-memory case the consumers will be able to do their
job (and thus help rabbitmq free memory faster)
Hope that helps,
Marek
_______________________________________________
rabbitmq-discuss mailing list
rabbitmq...@lists.rabbitmq.com
https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
To some extent the answer is "do your own tests", but to get you
thinking in the right direction, here are some pertinent facts:
* Starting a new channel on an existing connection involves one network
round trip - starting a new connection takes several.
* Each connection uses a file descriptor on the server. Channels don't.
* Publishing a large message on one channel will block a connection
while it goes out. Other than that, the multiplexing is fairly transparent.
* Connections which are publishing can get blocked if the server is
overloaded - it's a good idea to separate publishing and consuming
connections.
* There is only one AMQP parser process per connection. Therefore if you
have less connections than CPU cores, and are CPU bound in AMQP parsing,
you might not make full use of your server. This is generally pretty
rare but sounds like it may apply to you.
Cheers, Simon
--
Simon MacMullen
RabbitMQ, VMware