refactor client protocol
abstract session on consumer
abstract session on producer
Session abstraction