public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { if (context.TryGetIncomingMessage(out var incomingMessage)) { // do something with the incoming message } if (context.TryGetIncomingHeaders(out var incomingHeaders)) { // do something with the incoming headers } // the outgoing message var outgoingMessage = context.OutgoingMessage; // the bytes containing the serialized outgoing messages. var bytes = context.OutgoingBody; // optionally replace the Body. // this can be done using any information from the context context.OutgoingBody = ServiceThatChangesBody.Mutate(context.OutgoingMessage); // the outgoing headers var headers = context.OutgoingHeaders; // optional manipulate headers // add a header headers.Add("MyHeaderKey1", "MyHeaderValue"); // remove a header headers.Remove("MyHeaderKey2"); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var headers = context.OutgoingHeaders; headers["NServiceBus.EnclosedMessageTypes"] = $"{context.OutgoingMessage.GetType().Name}"; return(Task.CompletedTask); }
async Task InvokeOutgoingTransportMessageMutators(IOutgoingPhysicalMessageContext context, Func <IOutgoingPhysicalMessageContext, Task> next) { var outgoingMessage = context.Extensions.Get <OutgoingLogicalMessage>(); LogicalMessage incomingLogicalMessage; context.Extensions.TryGet(out incomingLogicalMessage); IncomingMessage incomingPhysicalMessage; context.Extensions.TryGet(out incomingPhysicalMessage); var mutatorContext = new MutateOutgoingTransportMessageContext( context.Body, outgoingMessage.Instance, context.Headers, incomingLogicalMessage?.Instance, incomingPhysicalMessage?.Headers); foreach (var mutator in context.Builder.BuildAll <IMutateOutgoingTransportMessages>()) { await mutator.MutateOutgoing(mutatorContext) .ThrowIfNull() .ConfigureAwait(false); } if (mutatorContext.MessageBodyChanged) { context.UpdateMessage(mutatorContext.OutgoingBody); } await next(context).ConfigureAwait(false); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var currentIdentity = Thread.CurrentPrincipal.Identity; context.OutgoingHeaders["WinIdName"] = currentIdentity.Name; return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingHeaders["HeaderSetByMutator"] = "some value"; context.OutgoingHeaders[Headers.EnclosedMessageTypes] = typeof(MessageThatMutatorChangesTo).FullName; context.OutgoingBody = Encoding.UTF8.GetBytes("<MessageThatMutatorChangesTo><SomeProperty>SomeValue</SomeProperty></MessageThatMutatorChangesTo>"); return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var headers = context.OutgoingHeaders; headers["MutateOutgoingTransportMessages"] = "ValueMutateOutgoingTransportMessages"; return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var headers = context.OutgoingHeaders; headers["MutateOutgoingTransportMessages"] = "ValueMutateOutgoingTransportMessages"; return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var bodyAsString = Encoding.UTF8 .GetString(context.OutgoingBody); log.Info($"Serialized Message Body:\r\n{bodyAsString}"); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var headers = context.OutgoingHeaders; headers.Add(Headers.TimeToBeReceived, TimeSpan.MaxValue.ToString()); headers.Add(Headers.NonDurableMessage, false.ToString()); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { Assert.IsNotEmpty(context.OutgoingHeaders); Assert.IsNotNull(context.OutgoingBody); context.TryGetIncomingHeaders(out var incomingHeaders); context.TryGetIncomingMessage(out var incomingMessage); Assert.IsNotEmpty(incomingHeaders); Assert.IsNotNull(incomingMessage); return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { if (principalAccessor.CurrentPrincipal?.Identity.Name != null) { log.Info("Adding CurrentPrincipal user to headers"); context.OutgoingHeaders["UserName"] = principalAccessor.CurrentPrincipal.Identity.Name; } return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { Assert.IsNotEmpty(context.OutgoingHeaders); Assert.IsNotNull(context.OutgoingBody); IReadOnlyDictionary <string, string> incomingHeaders; context.TryGetIncomingHeaders(out incomingHeaders); object incomingmessage; context.TryGetIncomingMessage(out incomingmessage); Assert.IsNotEmpty(incomingHeaders); Assert.IsNotNull(incomingmessage); return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { if (context == null) { return(Task.CompletedTask); } if (!context.TryGetIncomingHeaders(out var incomingHeaders)) { return(Task.CompletedTask); } var incomingHeadersOfInterest = incomingHeaders.Where(h => MetaDataConstants.AllConstants.Contains(h.Key)); context.OutgoingHeaders.AddHeadersIfDoNotExist(incomingHeadersOfInterest); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { log.Info($"transportMessage.Body size before compression: {context.OutgoingBody.Length}"); var mStream = new MemoryStream(context.OutgoingBody); var outStream = new MemoryStream(); using (var tinyStream = new GZipStream(outStream, CompressionMode.Compress)) { mStream.CopyTo(tinyStream); } // copy the compressed buffer only after the GZipStream is disposed, // otherwise, not all the compressed message will be copied. context.OutgoingBody = outStream.ToArray(); context.OutgoingHeaders["IWasCompressed"] = "true"; log.Info($"transportMessage.Body size after compression: {context.OutgoingBody.Length}"); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { logger.InfoFormat("transportMessage.Body size before compression: {0}", context.OutgoingBody.Length); MemoryStream mStream = new MemoryStream(context.OutgoingBody); MemoryStream outStream = new MemoryStream(); using (GZipStream tinyStream = new GZipStream(outStream, CompressionMode.Compress)) { mStream.CopyTo(tinyStream); } // copy the compressed buffer only after the GZipStream is disposed, // otherwise, not all the compressed message will be copied. context.OutgoingBody = outStream.ToArray(); context.OutgoingHeaders["IWasCompressed"] = "true"; logger.InfoFormat("transportMessage.Body size after compression: {0}", context.OutgoingBody.Length); return(Task.FromResult(0)); }
async Task InvokeOutgoingTransportMessageMutators(IOutgoingPhysicalMessageContext context, Func <IOutgoingPhysicalMessageContext, Task> next) { var outgoingMessage = context.Extensions.Get <OutgoingLogicalMessage>(); context.Extensions.TryGet(out LogicalMessage incomingLogicalMessage); context.Extensions.TryGet(out IncomingMessage incomingPhysicalMessage); var mutatorContext = new MutateOutgoingTransportMessageContext( context.Body, outgoingMessage.Instance, context.Headers, incomingLogicalMessage?.Instance, incomingPhysicalMessage?.Headers, context.CancellationToken); var hasMutators = false; foreach (var mutator in context.Builder.GetServices <IMutateOutgoingTransportMessages>()) { hasMutators = true; await mutator.MutateOutgoing(mutatorContext) .ThrowIfNull() .ConfigureAwait(false); } foreach (var mutator in mutators) { hasMutators = true; await mutator.MutateOutgoing(mutatorContext) .ThrowIfNull() .ConfigureAwait(false); } hasOutgoingTransportMessageMutators = hasMutators; if (mutatorContext.MessageBodyChanged) { context.UpdateMessage(mutatorContext.OutgoingBody); } await next(context).ConfigureAwait(false); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { // TODO Log when debug is enabled var outgoingHeaders = context.OutgoingHeaders; var tenantId = (_session.TenantId != null) ? _session.TenantId.Value.ToString() : "0"; var impersonatorTenantId = (_session.ImpersonatorTenantId != null) ? _session.ImpersonatorTenantId.Value.ToString() : string.Empty; var userId = (_session.UserId != null) ? _session.UserId.Value.ToString() : "0"; var impersonatorUserId = (_session.ImpersonatorUserId != null) ? _session.ImpersonatorUserId.Value.ToString() : string.Empty; outgoingHeaders.Add(MessageHeaders.TenantId, tenantId); outgoingHeaders.Add(MessageHeaders.UserId, userId); outgoingHeaders.Add(MessageHeaders.ImpersonatorTenantId, impersonatorTenantId); outgoingHeaders.Add(MessageHeaders.ImpersonatorUserId, impersonatorUserId); return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { object incomingMessage; if (context.TryGetIncomingMessage(out incomingMessage)) { // do something with the incoming message } IReadOnlyDictionary <string, string> incomingHeaders; if (context.TryGetIncomingHeaders(out incomingHeaders)) { // do something with the incoming headers } // the outgoing message object outgoingMessage = context.OutgoingMessage; // the bytes containing the serialized outgoing messages. byte[] bytes = context.OutgoingBody; // optionally replace the Body. // this can be done using any information from the context context.OutgoingBody = ServiceThatChangesBody.Mutate(context.OutgoingMessage); // the outgoing headers IDictionary <string, string> headers = context.OutgoingHeaders; // optional manipulate headers // add a header headers.Add("MyHeaderKey1", "MyHeaderValue"); // remove a header headers.Remove("MyHeaderKey2"); return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { var exceedsCompressionThresshold = context.OutgoingBody.Length > CompressThresshold; if (!exceedsCompressionThresshold) { if (IsDebugEnabled) { Log.Debug("Skip compression, not exceeding compression thresshold."); } return(TaskEx.CompletedTask); } var uncompressedBodyStream = new MemoryStream(context.OutgoingBody, false); var compressedBodyStream = new MemoryStream(); using (var compressionStream = new GZipStream(compressedBodyStream, CompressionLevel)) { uncompressedBodyStream.CopyTo(compressionStream); } var compressedBody = compressedBodyStream.ToArray(); if (IsDebugEnabled) { Log.DebugFormat("Uncompressed: {0:N0}, Compressed: {1:N0} ({2:N})", context.OutgoingBody.Length, compressedBody.Length, 100D * compressedBody.Length / context.OutgoingBody.Length); } if (compressedBody.Length > context.OutgoingBody.Length) { Log.InfoFormat("Compression didn't save any bytes, ignoring. Consider raising the current compression thresshold of {0:N0} bytes.", CompressThresshold); return(TaskEx.CompletedTask); } context.OutgoingBody = compressedBody; context.OutgoingHeaders[HeaderKey] = HeaderValue; return(TaskEx.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingHeaders["test_token"] = HttpContext.Current.Request.Params["test_token"]; return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { log.Info("Adding Thread.CurrentPrincipal user to headers"); context.OutgoingHeaders["UserName"] = Thread.CurrentPrincipal.Identity.Name; return(Task.FromResult(0)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingBody = context.OutgoingBody.Reverse().ToArray(); return(Task.FromResult(false)); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingBody[0]--; return(Task.FromResult(0)); }
public async Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingHeaders["MyCustomHeader"] = "My custom value"; }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingHeaders["MyCustomHeader"] = "My custom value"; return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { return(null); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingBody = new byte[0]; return(TaskEx.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { MutateOutgoingCalled = true; return(TaskEx.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingBody = context.OutgoingBody.Reverse().ToArray(); return(Task.CompletedTask); }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { MutateOutgoingCalled = true; return TaskEx.CompletedTask; }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { return null; }
public Task MutateOutgoing(MutateOutgoingTransportMessageContext context) { context.OutgoingBody = new byte[0]; return TaskEx.CompletedTask; }