Only restart RabbitMQ at the necessary times.

Pretty much, that should be if the Erlang cookie changes, or if the environment
configuration or general RabbitMQ configuration change. Otherwise, it really
doesn't need to restart for almost any reason.
Give full permissions to admin for rabbitmq_binding.

Per the RabbitMQ access controls page, the ability to read on exchanges and
write on queues is necessary in order to create a binding.
Works on Chef 11.8, does not work on latest because of hashie