making the RabbitClient singleton as good prcatice

Also, making pub/sub pattern polymorphic