public IMessageProducer CreateProducer(IDestination destination)
{
ProducerInfo command = CreateProducerInfo(destination);
ProducerId producerId = command.ProducerId;
MessageProducer producer = null;
try
{
producer = new MessageProducer(this, command);
producers[producerId] = producer;
this.connection.Oneway(command);
}
catch (Exception)
{
if (producer != null)
{
producer.Close();
}
throw;
}
// Registered with Connection so it can process Producer Acks.
connection.addProducer(producerId, producer);
return(producer);
}