added abstraction for rabbitmq