@Override
    public void destroy() throws Exception {
        if (this.sharedProducer != null) {
            this.sharedProducer.shutdown();
            this.sharedProducer = null;
        }
        for (FutureTask<MessageProducer> task : this.producers.values()) {
            try {
                MessageProducer producer = task.get(5000, TimeUnit.MILLISECONDS);
                if (producer != null) {
                    producer.shutdown();
                }
            }
            catch (Exception e) {
                // ignore
            }
        }
        this.producers.clear();

    }
Send message asynchronously with callback.

@param builder
@param cb
@param timeout
@param unit
@since 1.4.5
metamorphosis-client/src/main/java/com/taobao/metamorphosis/client/extension/spring/MetaqTemplate.java