void InnerSendBatch(Action <EnvelopeBuilder> configure, object[] messageItems) { if (messageItems.Length == 0) { return; } var id = _idGenerator(); var builder = new EnvelopeBuilder(id); foreach (var item in messageItems) { builder.AddItem(item); } configure(builder); var envelope = builder.Build(); var queue = GetOutboundQueue(); if (Transaction.Current == null) { queue.PutMessage(envelope); _observer.Notify(new EnvelopeSent(queue.Name, envelope.EnvelopeId, false, envelope.Items.Select(x => x.MappedType.Name).ToArray())); } else { var action = new CommitActionEnlistment(() => { queue.PutMessage(envelope); _observer.Notify(new EnvelopeSent(queue.Name, envelope.EnvelopeId, true, envelope.Items.Select(x => x.MappedType.Name).ToArray())); }); Transaction.Current.EnlistVolatile(action, EnlistmentOptions.None); } }
void InnerSendBatch(Action<EnvelopeBuilder> configure, object[] messageItems) { if (messageItems.Length == 0) return; var id = _idGenerator(); var builder = new EnvelopeBuilder(id); foreach (var item in messageItems) { builder.AddItem(item); } configure(builder); var envelope = builder.Build(); var queue = GetOutboundQueue(); if (Transaction.Current == null) { queue.PutMessage(envelope); _observer.Notify(new EnvelopeSent(queue.Name, envelope.EnvelopeId, false, envelope.Items.Select(x => x.MappedType.Name).ToArray())); } else { var action = new CommitActionEnlistment(() => { queue.PutMessage(envelope); _observer.Notify(new EnvelopeSent(queue.Name, envelope.EnvelopeId, true, envelope.Items.Select(x => x.MappedType.Name).ToArray())); }); Transaction.Current.EnlistVolatile(action, EnlistmentOptions.None); } }