public Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) { options ??= MessagingPublisherOptions.Default; void NewEnvelopeCustomizer(MessagingEnvelope outgoingEnvelope) { var correlationId = CorrelationManager.GetCorrelationId(); if (correlationId.HasValue) { outgoingEnvelope.SetHeader(MessagingHeaders.CorrelationId, correlationId.ToString()); } var messagingEnvelope = _messagingContextAccessor.MessagingContext?.MessagingEnvelope; if (messagingEnvelope != null) { messagingEnvelope.TransferHeaderTo(outgoingEnvelope, MessagingHeaders.CorrelationId); messagingEnvelope.TransferCustomHeadersTo(outgoingEnvelope); } options?.EnvelopeCustomizer?.Invoke(outgoingEnvelope); } return(_inner.PublishAsync(message, options with { EnvelopeCustomizer = NewEnvelopeCustomizer },
public Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) { options ??= MessagingPublisherOptions.Default; void NewCustomizer(MessagingEnvelope outgoingEnvelope) { if (_tracer.ActiveSpan != null) { _tracer.Inject(_tracer.ActiveSpan.Context, BuiltinFormats.TextMap, new TextMapInjectAdapter(outgoingEnvelope.Headers)); } options.EnvelopeCustomizer?.Invoke(outgoingEnvelope); } var formattedTopicName = _topicRegistry.GetTopicForName(options.TopicName) ?? _topicRegistry.GetTopicForMessageType(message.GetType()); var operationName = $"Publisher {message.GetType().GetPrettyName()}"; using (var scope = _tracer.BuildSpan(operationName) .WithTag(Tags.Component, MessagingTags.ComponentMessaging) .WithTag(Tags.SpanKind, Tags.SpanKindProducer) .WithTag(Tags.MessageBusDestination, formattedTopicName) .WithTag(MessagingTags.CorrelationId, CorrelationManager.GetCorrelationId()?.ToString()) .StartActive(true)) { try { return(_inner.PublishAsync(message, options with { EnvelopeCustomizer = NewCustomizer }, cancellationToken)); }
public Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) { options ??= MessagingPublisherOptions.Default; void NewCustomizer(MessagingEnvelope outgoingEnvelope) { outgoingEnvelope.SetHeader("SampleHeader", "SampleValue"); options.EnvelopeCustomizer?.Invoke(outgoingEnvelope); } _logger.LogDebug("Message {@Message} was sent.", message); return(_inner.PublishAsync(message, options with { EnvelopeCustomizer = NewCustomizer }, cancellationToken));
public async Task PublishAsync <T>(T message, MessagingPublisherOptions publisherOptions = null, CancellationToken cancellationToken = default) { var outgoingEnvelope = PrepareMessageEnvelope(message, publisherOptions?.EnvelopeCustomizer); var envelopeData = _messageSerDes.SerializeMessageEnvelope(outgoingEnvelope); var newTopicName = _topicRegistry.GetTopicForName(publisherOptions?.TopicName) ?? _topicRegistry.GetTopicForMessageType(message.GetType()); await _messagingTransport.PublishAsync(newTopicName, envelopeData, cancellationToken); _logger.LogDebug("Messaging publisher sent a message for subject {Subject}", newTopicName); await Task.Yield(); }
public async Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) { var tenantId = _tenantContextAccessor.TenantContext.GetTenantId(); options ??= MessagingPublisherOptions.Default; void NewCustomizer(MessagingEnvelope outgoingEnvelope) { outgoingEnvelope.SetHeader(MessagingHeaders.TenantId, tenantId.ToString()); options.EnvelopeCustomizer?.Invoke(outgoingEnvelope); } await _inner.PublishAsync(message, options with { EnvelopeCustomizer = NewCustomizer }, cancellationToken);
public Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) { options?.EnvelopeCustomizer?.Invoke(new MessagingEnvelope(new Dictionary <string, string>(), message)); return(Task.CompletedTask); }
public Task PublishAsync <T>(T message, MessagingPublisherOptions options = null, CancellationToken cancellationToken = default) => _busPublisher.PublishAsync(message, options, cancellationToken);