public async Task Send(SendContext <T> context) { context.SourceAddress = _sourceAddress; if (_conversationId.HasValue) { context.ConversationId = _conversationId; } if (_correlationId.HasValue) { context.InitiatorId = _correlationId; } var publishContext = new PublishContextProxy <T>(context, context.Message); bool firstTime = Interlocked.CompareExchange(ref _context, publishContext, null) == null; await _publishPipe.Send(publishContext).ConfigureAwait(false); await _pipe.Send(publishContext).ConfigureAwait(false); if (firstTime) { await _observer.PrePublish(publishContext).ConfigureAwait(false); } }
public async Task Send(PublishContext <ScheduleRecurringMessage> context) { if (_pipe.IsNotEmpty()) { var proxy = new PublishContextProxy <T>(context, _payload); await _pipe.Send(proxy).ConfigureAwait(false); } }
public async Task Should_not_fail_if_properties_are_already_defined() { var telemetryClient = new TelemetryClient(); // Arrange. var messageId = Guid.NewGuid(); var conversationId = Guid.NewGuid(); var correlationId = Guid.NewGuid(); var requestId = Guid.NewGuid(); var inputAddress = new Uri("http://masstransit-project.com/"); var destinationAddress = new Uri("sb://my-organization.servicebus.windows.net/MyNamespace/MyMessage"); var mockReceiveContext = new Mock <ReceiveContext>(); mockReceiveContext.Setup(c => c.InputAddress).Returns(inputAddress); var mockSendContext = new Mock <SendContext <PingMessage> >(); mockSendContext.Setup(c => c.Headers).Returns(_mockHeaders.Object); mockSendContext.Setup(c => c.MessageId).Returns(messageId); mockSendContext.Setup(c => c.ConversationId).Returns(conversationId); mockSendContext.Setup(c => c.CorrelationId).Returns(correlationId); mockSendContext.Setup(c => c.RequestId).Returns(requestId); mockSendContext.Setup(c => c.DestinationAddress).Returns(destinationAddress); var publishContextProxy = new PublishContextProxy <PingMessage>(mockSendContext.Object, new PingMessage()); var capturedTelemetry = default(DependencyTelemetry); var filter = new ApplicationInsightsPublishFilter <PingMessage>(new TelemetryClient(), "", "", (holder, context) => capturedTelemetry = holder.Telemetry); await filter.Send(publishContextProxy, new Mock <IPipe <PublishContext <PingMessage> > >().Object); var configuration = TelemetryConfiguration.CreateDefault(); configuration.TelemetryInitializers.Add(new CopyPropertiesTelemetryInitializer(capturedTelemetry)); telemetryClient = new TelemetryClient(configuration); filter = new ApplicationInsightsPublishFilter <PingMessage>(telemetryClient, "", "", (h, c) => { }); // Act, Assert Assert.That(async() => await filter.Send(publishContextProxy, new Mock <IPipe <PublishContext <PingMessage> > >().Object), Throws.Nothing); }
public async Task Send(SendContext <T> context) { if (_consumeContext != null) { context.TransferConsumeContextHeaders(_consumeContext); } context.SourceAddress = _sourceAddress; var publishContext = new PublishContextProxy <T>(context, context.Message); var firstTime = Interlocked.CompareExchange(ref _context, publishContext, null) == null; await _publishPipe.Send(publishContext).ConfigureAwait(false); await _pipe.Send(publishContext).ConfigureAwait(false); if (firstTime) { await _observer.PrePublish(publishContext).ConfigureAwait(false); } }
public async Task Should_add_the_expected_properties_to_the_dependency_telemetry() { // Arrange. var messageId = Guid.NewGuid(); var conversationId = Guid.NewGuid(); var correlationId = Guid.NewGuid(); var requestId = Guid.NewGuid(); var destinationAddress = new Uri("sb://my-organization.servicebus.windows.net/MyNamespace/MyMessage"); var mockSendContext = new Mock <SendContext>(); mockSendContext.Setup(c => c.Headers).Returns(_mockHeaders.Object); mockSendContext.Setup(c => c.MessageId).Returns(messageId); mockSendContext.Setup(c => c.ConversationId).Returns(conversationId); mockSendContext.Setup(c => c.CorrelationId).Returns(correlationId); mockSendContext.Setup(c => c.RequestId).Returns(requestId); mockSendContext.Setup(c => c.DestinationAddress).Returns(destinationAddress); var publishContextProxy = new PublishContextProxy <PingMessage>(mockSendContext.Object, new PingMessage()); var capturedTelemetry = default(DependencyTelemetry); var filter = new ApplicationInsightsPublishFilter <PingMessage>(new TelemetryClient(), "", "", (holder, context) => capturedTelemetry = holder.Telemetry); // Act. await filter.Send(publishContextProxy, new Mock <IPipe <PublishContext <PingMessage> > >().Object); // Assert. Assert.IsNotNull(capturedTelemetry); Assert.AreEqual(capturedTelemetry.Properties["MessageId"], messageId.ToString()); Assert.AreEqual(capturedTelemetry.Properties["MessageType"], TypeMetadataCache <PingMessage> .ShortName); Assert.AreEqual(capturedTelemetry.Properties["ConversationId"], conversationId.ToString()); Assert.AreEqual(capturedTelemetry.Properties["CorrelationId"], correlationId.ToString()); Assert.AreEqual(capturedTelemetry.Properties["DestinationAddress"], destinationAddress.ToString()); Assert.AreEqual(capturedTelemetry.Properties["RequestId"], requestId.ToString()); }
public Task Send(SendContext context) { var proxy = new PublishContextProxy(context); return(_publishPipe.Send(proxy)); }