public SendResult send(MessageBuilder builder, long timeout, TimeUnit unit) throws InterruptedException {
Message msg = builder.build(this.messageBodyConverter);
final String topic = msg.getTopic();
MessageProducer producer = this.getOrCreateProducer(topic);
try {
return producer.sendMessage(msg, timeout, unit);
}
catch (MetaClientException e) {
return new SendResult(false, null, -1, ExceptionUtils.getFullStackTrace(e));
}
}