Added consumer factory that switches implementations by message content