コード例 #1
0
        private void SendAmqpMessage(Message m)
        {
            bool firstTry = true;

            ReliableSender rl = _senders.PickSender( );

            while (true)
            {
                try
                {
                    rl.Sender.Send(m, SendOutcome, rl);
                    break;
                }
                catch (Exception ex)
                {
                    Logger.LogError("Exception on send" + ex.Message);

                    if (firstTry)
                    {
                        firstTry = false;

                        rl.SetDead( );
                    }
                    else
                    {
                        // re-trhrow the exception if we already re-tried
                        throw;
                    }
                }
            }
        }
コード例 #2
0
            public async Task SenderCatchesAndRethrowsAS4Exception_IfNotifyMesage()
            {
                // Arrange
                var sut = new ReliableSender(notifySender: new SaboteurSender());

                // Act
                SendResult r = await sut.SendAsync(DummyNotifyMessage());

                // Assert
                Assert.Equal(SendResult.FatalFail, r);
            }
コード例 #3
0
            public void SenderDelegatesConfiguration_IfNotifySender()
            {
                // Arrange
                var stubSender = new SpySender();
                var sut        = new ReliableSender(notifySender: stubSender);

                // Act
                sut.Configure(method: null);

                // Assert
                Assert.True(stubSender.IsConfigured);
            }
コード例 #4
0
            //--//

            public SendersPool(string amqpAddress, string eventHubName, int size, ILogger logger)
            {
                _logger = logger;

                if (size > MAX_POOL_SIZE)
                {
                    size = MAX_POOL_SIZE;
                }

                _pool = new ReliableSender[size];

                for (int i = 0; i < size; ++i)
                {
                    _pool[i] = new ReliableSender(amqpAddress, eventHubName, logger);
                }

                _current = 0;
            }