public async Task Send(SendEndpointContext clientContext) { var context = new AzureServiceBusSendContext <T>(_message, _cancellationToken); try { await _pipe.Send(context).ConfigureAwait(false); CopyIncomingIdentifiersIfPresent(context); if (IsCancelScheduledSend(context, out var sequenceNumber)) { await CancelScheduledSend(clientContext, sequenceNumber).ConfigureAwait(false); return; } if (context.ScheduledEnqueueTimeUtc.HasValue) { var scheduled = await ScheduleSend(clientContext, context).ConfigureAwait(false); if (scheduled) { return; } } await _observer.PreSend(context).ConfigureAwait(false); var brokeredMessage = CreateBrokeredMessage(context); await clientContext.Send(brokeredMessage).ConfigureAwait(false); context.LogSent(); await _observer.PostSend(context).ConfigureAwait(false); } catch (Exception ex) { await _observer.SendFault(context, ex).ConfigureAwait(false); throw; } }
public async Task Send(SendEndpointContext clientContext) { LogContext.SetCurrentIfNull(_context.LogContext); var context = new AzureServiceBusSendContext <T>(_message, _cancellationToken); await _pipe.Send(context).ConfigureAwait(false); CopyIncomingIdentifiersIfPresent(context); StartedActivity?activity = LogContext.IfEnabled(OperationName.Transport.Send)?.StartSendActivity(context, (nameof(context.PartitionKey), context.PartitionKey), (nameof(context.SessionId), context.SessionId)); try { if (IsCancelScheduledSend(context, out var sequenceNumber)) { await CancelScheduledSend(clientContext, sequenceNumber).ConfigureAwait(false); return; } if (context.ScheduledEnqueueTimeUtc.HasValue) { var scheduled = await ScheduleSend(clientContext, context).ConfigureAwait(false); if (scheduled) { return; } } if (_context.SendObservers.Count > 0) { await _context.SendObservers.PreSend(context).ConfigureAwait(false); } var brokeredMessage = CreateBrokeredMessage(context); await clientContext.Send(brokeredMessage).ConfigureAwait(false); context.LogSent(); if (_context.SendObservers.Count > 0) { await _context.SendObservers.PostSend(context).ConfigureAwait(false); } } catch (Exception ex) { if (_context.SendObservers.Count > 0) { await _context.SendObservers.SendFault(context, ex).ConfigureAwait(false); } throw; } finally { activity?.Stop(); } }
Task SendEndpointContext.Send(Message message) { return(_context.Send(message)); }