示例#1
0
        public MsmqSettings(ReadOnlySettings settings)
        {
            ExecuteInstaller       = true;
            UseDeadLetterQueue     = true;
            UseConnectionCache     = true;
            UseTransactionalQueues = true;
            UseJournalQueue        = false;
            UseDeadLetterQueueForMessagesWithTimeToBeReceived = false;
            TimeToReachQueue = Message.InfiniteTimeout;
            ScopeOptions     = new MsmqScopeOptions();
            LabelGenerator   = (headers => string.Empty);

            if (settings == null)
            {
                return;
            }

            if (settings.TryGet <bool>("ExecuteInstaller", out var executeInstaller))
            {
                ExecuteInstaller = executeInstaller;
            }

            if (settings.TryGet <bool>("UseDeadLetterQueue", out var useDeadLetterQueue))
            {
                UseDeadLetterQueue = useDeadLetterQueue;
            }

            if (settings.TryGet <bool>("UseConnectionCache", out var useConnectionCache))
            {
                UseConnectionCache = useConnectionCache;
            }

            if (settings.TryGet <bool>("UseTransactionalQueues", out var useTransactionalQueues))
            {
                UseTransactionalQueues = useTransactionalQueues;
            }

            if (settings.TryGet <TimeSpan>("TimeToReachQueue", out var timeToReachQueue))
            {
                TimeToReachQueue = timeToReachQueue;
            }

            if (settings.TryGet <bool>("UseDeadLetterQueueForMessagesWithTimeToBeReceived", out var useDeadLetterQueueForMessagesWithTimeToBeReceived))
            {
                UseDeadLetterQueueForMessagesWithTimeToBeReceived = useDeadLetterQueueForMessagesWithTimeToBeReceived;
            }

            if (settings.TryGet <MsmqScopeOptions>(out var options))
            {
                ScopeOptions = options;
            }

            if (settings.TryGet <Func <IReadOnlyDictionary <string, string>, string> >("msmqLabelGenerator", out var generator))
            {
                LabelGenerator = generator;
            }
        }
        public MsmqSettings(ReadOnlySettings settings)
        {
            ExecuteInstaller       = true;
            UseDeadLetterQueue     = true;
            UseConnectionCache     = true;
            UseTransactionalQueues = true;
            UseJournalQueue        = false;
            UseDeadLetterQueueForMessagesWithTimeToBeReceived = false;
            TimeToReachQueue         = Message.InfiniteTimeout;
            ScopeOptions             = new MsmqScopeOptions();
            LabelGenerator           = (headers => string.Empty);
            MessageEnumeratorTimeout = TimeSpan.FromSeconds(1); //with a 1s timeout a graceful shutdown will take on average 500ms which is acceptable

            if (settings == null)
            {
                return;
            }

            if (settings.TryGet <bool>("ExecuteInstaller", out var executeInstaller))
            {
                ExecuteInstaller = executeInstaller;
            }

            if (settings.TryGet <bool>("UseDeadLetterQueue", out var useDeadLetterQueue))
            {
                UseDeadLetterQueue = useDeadLetterQueue;
            }

            if (settings.TryGet <bool>("UseConnectionCache", out var useConnectionCache))
            {
                UseConnectionCache = useConnectionCache;
            }

            if (settings.TryGet <bool>("UseTransactionalQueues", out var useTransactionalQueues))
            {
                UseTransactionalQueues = useTransactionalQueues;
            }

            if (settings.TryGet <TimeSpan>("TimeToReachQueue", out var timeToReachQueue))
            {
                TimeToReachQueue = timeToReachQueue;
            }

            if (settings.TryGet <TimeSpan>("NServiceBus.Transport.Msmq.MessageEnumeratorTimeout", out var messageEnumeratorTimeout))
            {
                MessageEnumeratorTimeout = messageEnumeratorTimeout;
            }

            if (settings.TryGet <bool>("UseDeadLetterQueueForMessagesWithTimeToBeReceived", out var useDeadLetterQueueForMessagesWithTimeToBeReceived))
            {
                UseDeadLetterQueueForMessagesWithTimeToBeReceived = useDeadLetterQueueForMessagesWithTimeToBeReceived;
            }

            if (settings.TryGet <MsmqScopeOptions>(out var options))
            {
                ScopeOptions = options;
            }

            if (settings.TryGet <Func <IReadOnlyDictionary <string, string>, string> >("msmqLabelGenerator", out var generator))
            {
                LabelGenerator = generator;
            }
        }