Feat
- **KombuBroker**: now RabbitMQ return error when message published to non-existing queue, previously the message was discarded; (use mandatory=True)
- **KombuBroker**: now you can ensure `.XQ` and `.DQ` queues when canonical declared before. Just place queue name to `broker.queues_pending` and call declare with ensure=True
Fix
- **KombuBroker**: do not close channels each time, use channel context manager instead (all channels are support our ReleasableChannel protocol)
- **topology**: now declare_*_queue re-raise PreconditionFailed when it's not topology difference error (e.g. invalid arguments)
- **topology**: x-message-ttl now passed correclty (previous we can pass float instead int; rabbitmq not allow float)
Refactor
- **broker**: add _enqueue_message function; now enqueue can be overrided or reused internally
- explicit use canonical queue name where it required; use queue names from given Topology