/// <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); }
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)); }
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()); }