示例#1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SumoLogicSink"/> class.
        /// </summary>
        /// <param name="log">The log service.</param>
        /// <param name="httpMessageHandler">HTTP message handler.</param>
        /// <param name="connection">Connection configuration.</param>
        /// <param name="source">Event source describer.</param>
        /// <param name="formatter">Text formatter.</param>
        public SumoLogicSink(
            ILog log,
            HttpMessageHandler httpMessageHandler,
            SumoLogicConnection connection,
            SumoLogicSource source,
            ITextFormatter formatter)
        {
            if (connection is null)
            {
                throw new ArgumentNullException(nameof(connection));
            }

            if (source is null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            _formatter = formatter ?? throw new ArgumentNullException(nameof(formatter));
            _log       = log ?? new DummyLog();

            _messageSender = MessageSenderFactory.CreateMessageSender(_log, httpMessageHandler, connection);
            _messageQueue  = MessageQueueFactory.CreateMessageQueue(_log, connection);
            SumoLogicMessageSenderBufferFlushingTask flushBufferTask = FlushBufferTaskFactory.CreateFlushBufferTask(
                _log,
                _messageSender,
                _messageQueue,
                connection,
                source);

            _flushBufferTimer = new Timer(
                _ => flushBufferTask.Run(),
                null,
                TimeSpan.FromMilliseconds(0),
                connection.FlushingAccuracy);
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SumoLogicUnbufferedSink"/> class.
        /// </summary>
        /// <param name="log">The log service.</param>
        /// <param name="httpMessageHandler">HTTP message handler.</param>
        /// <param name="connection">Connection configuration.</param>
        /// <param name="source">Event source describer.</param>
        /// <param name="formatter">Text formatter.</param>
        public SumoLogicUnbufferedSink(
            ILog log,
            HttpMessageHandler httpMessageHandler,
            SumoLogicConnection connection,
            SumoLogicSource source,
            ITextFormatter formatter)
        {
            if (connection is null)
            {
                throw new ArgumentNullException(nameof(connection));
            }

            _source    = source ?? throw new ArgumentNullException(nameof(source));
            _formatter = formatter ?? throw new ArgumentNullException(nameof(formatter));

            _log           = log ?? new DummyLog();
            _messageSender = MessageSenderFactory.CreateMessageSender(_log, httpMessageHandler, connection);
        }
        public void Create_New_Message_Senders_Regardless_Of_Having_The_Same_Config()
        {
            var sameConfig = new MyEndpointHandlingConfig
            {
                ConnectionString =
                    "Endpoint=sb://your-sb.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=",
                EntityPath                  = "unittests.singlemessagetype/Subscriptions/MessageReceiverFactoryShould",
                MaxConcurrentCalls          = 2,
                MaxAutoRenewDurationSeconds = 60,
                AutoComplete                = true,
            };

            var messageSender        = _messageSenderFactory.CreateMessageSender(sameConfig);
            var anotherMessageSender = _messageSenderFactory.CreateMessageSender(sameConfig);

            messageSender.Should().NotBeNull();
            anotherMessageSender.Should().NotBeNull();
            messageSender.Should().NotBeSameAs(anotherMessageSender);
        }