public void Inject(object handlerOrInterceptor, NimbusMessage nimbusMessage) { var requireBus = handlerOrInterceptor as IRequireBus; if (requireBus != null) { requireBus.Bus = Bus; } var requiresBusId = handlerOrInterceptor as IRequireBusId; if (requiresBusId != null) { requiresBusId.BusId = Bus.InstanceId; } var requireDispatchContext = handlerOrInterceptor as IRequireDispatchContext; if (requireDispatchContext != null) { requireDispatchContext.DispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); } var requireNimbusMessage = handlerOrInterceptor as IRequireNimbusMessage; if (requireNimbusMessage != null) { requireNimbusMessage.NimbusMessage = nimbusMessage; } var requireDateTime = handlerOrInterceptor as IRequireDateTime; if (requireDateTime != null) { requireDateTime.UtcNow = () => _clock.UtcNow; } var requireLargeMessageBodyStore = handlerOrInterceptor as IRequireLargeMessageBodyStore; if (requireLargeMessageBodyStore != null) { requireLargeMessageBodyStore.LargeMessageBodyStore = _largeMessageBodyStore; } var requireMessageProperties = handlerOrInterceptor as IRequireMessageProperties; if (requireMessageProperties != null) { var properties = nimbusMessage.ExtractProperties(); requireMessageProperties.MessageProperties = properties; } }
public Task <NimbusMessage> Create(string destinationPath, [AllowNull] object payload) { var nimbusMessage = new NimbusMessage(destinationPath, payload); var expiresAfter = _clock.UtcNow.AddSafely(_timeToLive.Value); var currentDispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); nimbusMessage.PrecedingMessageId = currentDispatchContext.ResultOfMessageId; nimbusMessage.CorrelationId = currentDispatchContext.CorrelationId; nimbusMessage.From = _replyQueueName; nimbusMessage.ExpiresAfter = expiresAfter; return(Task.FromResult(nimbusMessage)); }
public void Inject(object handlerOrInterceptor, BrokeredMessage brokeredMessage) { var requireBus = handlerOrInterceptor as IRequireBus; if (requireBus != null) { requireBus.Bus = Bus; } var requireDispatchContext = handlerOrInterceptor as IRequireDispatchContext; if (requireDispatchContext != null) { requireDispatchContext.DispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); } var requireBrokeredMessage = handlerOrInterceptor as IRequireBrokeredMessage; if (requireBrokeredMessage != null) { requireBrokeredMessage.BrokeredMessage = brokeredMessage; } var requireDateTime = handlerOrInterceptor as IRequireDateTime; if (requireDateTime != null) { requireDateTime.UtcNow = () => _clock.UtcNow; } var requireLargeMessageBodyStore = handlerOrInterceptor as IRequireLargeMessageBodyStore; if (requireLargeMessageBodyStore != null) { requireLargeMessageBodyStore.LargeMessageBodyStore = _largeMessageBodyStore; } var requireMessageProperties = handlerOrInterceptor as IRequireMessageProperties; if (requireMessageProperties != null) { var properties = brokeredMessage.ExtractProperties(); requireMessageProperties.MessageProperties = properties; } }
public Task <NimbusMessage> Create(string destinationPath, [AllowNull] object payload) { var nimbusMessage = new NimbusMessage(destinationPath, payload); var expiresAfter = _clock.UtcNow.AddSafely(_timeToLive.Value); var currentDispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); nimbusMessage.PrecedingMessageId = currentDispatchContext.ResultOfMessageId; nimbusMessage.CorrelationId = currentDispatchContext.CorrelationId; nimbusMessage.From = _replyQueueName; nimbusMessage.ExpiresAfter = expiresAfter; payload?.GetType().GetProperties() .Where(p => p.HasAttribute <FilterProperty>()) .Do(p => nimbusMessage.Properties[p.Name] = p.GetValue(payload)) .Done(); return(Task.FromResult(nimbusMessage)); }
public Task <BrokeredMessage> Create(object serializableObject = null) { return(Task.Run(async() => { BrokeredMessage brokeredMessage; if (serializableObject == null) { brokeredMessage = new BrokeredMessage(); } else { var messageBodyBytes = BuildBodyBytes(serializableObject); if (messageBodyBytes.Length > _maxLargeMessageSize) { var errorMessage = "Message body size of {0} is larger than the permitted maximum of {1}. You need to change this in your bus configuration settings if you want to send messages this large." .FormatWith(messageBodyBytes.Length, _maxLargeMessageSize.Value); throw new BusException(errorMessage); } if (messageBodyBytes.Length > _maxSmallMessageSize) { brokeredMessage = new BrokeredMessage(); var expiresAfter = _clock.UtcNow.AddSafely(_timeToLive.Value); var blobIdentifier = await _largeMessageBodyStore.Store(brokeredMessage.MessageId, messageBodyBytes, expiresAfter); brokeredMessage.Properties[MessagePropertyKeys.LargeBodyBlobIdentifier] = blobIdentifier; } else { brokeredMessage = new BrokeredMessage(new MemoryStream(messageBodyBytes), true); } brokeredMessage.Properties[MessagePropertyKeys.MessageType] = serializableObject.GetType().FullName; } var currentDispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); brokeredMessage.Properties[MessagePropertyKeys.PrecedingMessageId] = currentDispatchContext.ResultOfMessageId; brokeredMessage.CorrelationId = currentDispatchContext.CorrelationId ?? brokeredMessage.MessageId; brokeredMessage.ReplyTo = _replyQueueName; return brokeredMessage; })); }
public Task <BrokeredMessage> BuildBrokeredMessage(NimbusMessage message) { return(Task.Run(async() => { BrokeredMessage brokeredMessage; var messageBodyBytes = SerializeNimbusMessage(message); if (messageBodyBytes.Length > _maxLargeMessageSize) { var errorMessage = "Message body size of {0} is larger than the permitted maximum of {1}. You need to change this in your bus configuration settings if you want to send messages this large." .FormatWith(messageBodyBytes.Length, _maxLargeMessageSize.Value); throw new BusException(errorMessage); } if (messageBodyBytes.Length > _maxSmallMessageSize) { brokeredMessage = new BrokeredMessage(); var expiresAfter = message.ExpiresAfter; var blobIdentifier = await _largeMessageBodyStore.Store(message.MessageId, messageBodyBytes, expiresAfter); brokeredMessage.Properties[MessagePropertyKeys.LargeBodyBlobIdentifier] = blobIdentifier; } else { brokeredMessage = new BrokeredMessage(messageBodyBytes); } var currentDispatchContext = _dispatchContextManager.GetCurrentDispatchContext(); brokeredMessage.MessageId = message.MessageId.ToString(); brokeredMessage.CorrelationId = currentDispatchContext.CorrelationId.ToString(); brokeredMessage.ReplyTo = message.From; brokeredMessage.TimeToLive = message.ExpiresAfter.Subtract(DateTimeOffset.UtcNow); brokeredMessage.ScheduledEnqueueTimeUtc = message.DeliverAfter.UtcDateTime; foreach (var property in message.Properties) { brokeredMessage.Properties[property.Key] = property.Value; } return brokeredMessage; })); }