Esempio n. 1
0
        /// <summary>
        /// Создать сервис для управления подписками на очереди сообщений.
        /// </summary>
        public IMessageQueueManager CreateMessageQueueManager()
        {
            if (_queueManager == null)
            {
                // Сессия на команду, чтобы обеспечить изоляцию при выполнении команд
                var sessionManager  = new MessageQueueSessionManagerPerCommand(_sessionFactory);
                var commandExecutor = new MessageQueueCommandExecutor(_commandExecutor, sessionManager);

                _queueManager = new MessageQueueManager(commandExecutor, _queueListener, _defaultExchangeConfig, _defaultQueueConfig);
            }

            return(_queueManager);
        }
Esempio n. 2
0
        public void ShouldReturnsNewSessionBeforeEachCommand()
        {
            // Given
            var sessionFactory = new Mock <IMessageQueueSessionFactory>();

            // When
            var target = new MessageQueueSessionManagerPerCommand(sessionFactory.Object);

            target.OpenSession();
            target.OpenSession();

            // Then
            sessionFactory.Verify(m => m.OpenSession(), Times.Exactly(2));
        }
Esempio n. 3
0
        public void ShouldDisposeSessionAfterCommand()
        {
            // Given
            var session = new Mock <IMessageQueueSession>();

            session.SetupGet(m => m.IsOpen).Returns(true);
            var sessionFactory = new Mock <IMessageQueueSessionFactory>();

            sessionFactory.Setup(m => m.OpenSession()).Returns(session.Object);

            // When
            var target        = new MessageQueueSessionManagerPerCommand(sessionFactory.Object);
            var actualSession = target.OpenSession();

            target.CloseSession(actualSession);

            // Then
            Assert.AreEqual(session.Object, actualSession);
            session.Verify(m => m.Dispose());
        }