/// <summary> /// Initializes a new instance of the <see cref="DefaultExtendedQueueFactory" /> class. /// </summary> /// <param name="messageProvider">An object that will generate a proper instance of <see cref="IQueueMessage" />.</param> /// <param name="maximumMessageSizeProvider">An object that will report the maximum size of a message.</param> /// <param name="maximumMessagePerRequestProvider">An object that will report the maximum amount of messages that can be retrieved per request.</param> /// <param name="overflownMessageHandler">An object that handles messages that are overflown and should be recorded in a temporary storage.</param> /// <param name="logService">The logging service to use.</param> public DefaultExtendedQueueFactory( [NotNull] IQueueMessageProvider messageProvider, [NotNull] IMaximumMessageSizeProvider maximumMessageSizeProvider, [NotNull] IMaximumMessagesPerRequestProvider maximumMessagePerRequestProvider, [NotNull] IOverflownMessageHandler overflownMessageHandler, [NotNull] ILogService logService) { Guard.NotNull(messageProvider, "messageProvider"); Guard.NotNull(maximumMessageSizeProvider, "maximumMessageSizeProvider"); Guard.NotNull(maximumMessagePerRequestProvider, "maximumMessagePerRequestProvider"); Guard.NotNull(overflownMessageHandler, "overflownMessageHandler"); Guard.NotNull(logService, "logService"); this.MessageProvider = messageProvider; this.MaximumMessageSizeProvider = maximumMessageSizeProvider; this.MaximumMessagesProvider = maximumMessagePerRequestProvider; this.OverflownMessageHandler = overflownMessageHandler; this.LogService = logService; this.Decorators = new List <Func <ExtendedQueueBase, DecoratorBase> > { q => new CompressionDecorator(q), q => new JsonSerialiserDecorator(q), q => new OverflowHandlingDecorator(q, this.OverflownMessageHandler), q => new LoggingDecorator(q, this.LogService) }; }
/// <summary> /// Initializes a new instance of the <see cref="ExtendedQueue" /> class. /// </summary> /// <param name="original">The original queue to be wrapped.</param> /// <param name="messageProvider">The queue message provider that's used to generate new queue messages.</param> /// <param name="maximumSizeSizeProvider">The maximum size of a queue's message provider.</param> /// <param name="maximumMessagesPerRequestProvider">The maximum queue messages per request provider.</param> /// <exception cref="ArgumentNullException">The parameter was null: + <paramref name="original" /></exception> public ExtendedQueue( [NotNull] IQueue original, IQueueMessageProvider messageProvider, IMaximumMessageSizeProvider maximumSizeSizeProvider, IMaximumMessagesPerRequestProvider maximumMessagesPerRequestProvider) { Guard.NotNull(original, "original"); Guard.NotNull(messageProvider, "messageProvider"); this.OriginalQueue = original; this.MessageProvider = messageProvider; this.MaximumSizeProvider = maximumSizeSizeProvider; this.MaximumMessagesProvider = maximumMessagesPerRequestProvider; }