Пример #1
0
        /// <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)
            };
        }
Пример #2
0
        /// <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;
        }