public async Task DeliversMessagesByVisibleTimeAndNotByInsertionTime() { var rebusTime = new DefaultRebusTime(); var loggerFactory = new ConsoleLoggerFactory(false); var connectionProvider = new DbConnectionProvider(MySqlTestHelper.ConnectionString, loggerFactory); var asyncTaskFactory = new TplAsyncTaskFactory(loggerFactory); var transport = new MySqlTransport( connectionProvider, QueueName, loggerFactory, asyncTaskFactory, rebusTime, new MySqlTransportOptions(connectionProvider)); transport.EnsureTableIsCreated(); transport.Initialize(); var now = DateTime.Now; await PutInQueue(transport, GetTransportMessage("first message")); await PutInQueue(transport, GetTransportMessage("second message", deferredUntilTime : now.AddMinutes(-1))); await PutInQueue(transport, GetTransportMessage("third message", deferredUntilTime : now.AddMinutes(-2))); var firstMessage = await ReceiveMessageBody(transport); var secondMessage = await ReceiveMessageBody(transport); var thirdMessage = await ReceiveMessageBody(transport); // expect messages to be received in reverse order because of their visible times Assert.That(firstMessage, Is.EqualTo("third message")); Assert.That(secondMessage, Is.EqualTo("second message")); Assert.That(thirdMessage, Is.EqualTo("first message")); }
protected override void SetUp() { MySqlTestHelper.DropTableIfExists(_tableName); var consoleLoggerFactory = new ConsoleLoggerFactory(false); var asyncTaskFactory = new TplAsyncTaskFactory(consoleLoggerFactory); var connectionHelper = new MySqlConnectionHelper(MySqlTestHelper.ConnectionString); _transport = new MySqlTransport(connectionHelper, _tableName, QueueName, consoleLoggerFactory, asyncTaskFactory); _transport.EnsureTableIsCreated(); Using(_transport); _transport.Initialize(); _cancellationToken = new CancellationTokenSource().Token; }
protected override void SetUp() { MySqlTestHelper.DropAllTables(); var rebusTime = new DefaultRebusTime(); var consoleLoggerFactory = new ConsoleLoggerFactory(false); var connectionProvider = new DbConnectionProvider(MySqlTestHelper.ConnectionString, consoleLoggerFactory); var asyncTaskFactory = new TplAsyncTaskFactory(consoleLoggerFactory); _transport = new MySqlTransport(connectionProvider, QueueName, consoleLoggerFactory, asyncTaskFactory, rebusTime, new MySqlTransportOptions(connectionProvider)); _transport.EnsureTableIsCreated(); Using(_transport); _transport.Initialize(); _cancellationToken = new CancellationTokenSource().Token; }
protected override void SetUp() { // start clean MySqlTestHelper.DropAllTables(); // end clean Using(new DisposableCallback(MySqlTestHelper.DropAllTables)); var loggerFactory = new ListLoggerFactory(); var connectionProvider = new DbConnectionProvider(MySqlTestHelper.ConnectionString, loggerFactory); _subscriptionStorage = new MySqlSubscriptionStorage(connectionProvider, "Subscriptions", isCentralized: true, loggerFactory); _subscriptionStorage.EnsureTableIsCreated(); _subscriberTransport = Using(new MySqlTransport(connectionProvider, "subscriber", loggerFactory, new TplAsyncTaskFactory(loggerFactory), new FakeRebusTime(), new MySqlTransportOptions(connectionProvider))); _subscriberTransport.EnsureTableIsCreated(); _subscriberTransport.Initialize(); }
public ITransport Create(string inputQueueAddress) { var tableName = ("rebus_messages_" + TestConfig.Suffix).TrimEnd('_'); _tablesToDrop.Add(tableName); var consoleLoggerFactory = new ConsoleLoggerFactory(false); var connectionHelper = new MySqlConnectionHelper(MySqlTestHelper.ConnectionString); var asyncTaskFactory = new TplAsyncTaskFactory(consoleLoggerFactory); var transport = new MySqlTransport(connectionHelper, tableName, inputQueueAddress, consoleLoggerFactory, asyncTaskFactory); _disposables.Add(transport); transport.EnsureTableIsCreated(); transport.Initialize(); return(transport); }
public ITransport Create(string inputQueueAddress) { var tableName = ("RebusMessages_" + TestConfig.Suffix).TrimEnd('_'); MySqlTestHelper.DropTable(tableName); _tablesToDrop.Add(tableName); var rebusTime = new DefaultRebusTime(); var consoleLoggerFactory = new ConsoleLoggerFactory(false); var connectionProvider = new DbConnectionProvider(MySqlTestHelper.ConnectionString, consoleLoggerFactory); var asyncTaskFactory = new TplAsyncTaskFactory(consoleLoggerFactory); var transport = new MySqlTransport(connectionProvider, inputQueueAddress, consoleLoggerFactory, asyncTaskFactory, rebusTime, new MySqlTransportOptions(connectionProvider)); _disposables.Add(transport); transport.EnsureTableIsCreated(); transport.Initialize(); return(transport); }
static void Configure(StandardConfigurer <ITransport> configurer, Func <IRebusLoggerFactory, MySqlConnectionHelper> connectionProviderFactory, string tableName, string inputQueueName) { configurer.Register(context => { var rebusLoggerFactory = context.Get <IRebusLoggerFactory>(); var asyncTaskFactory = context.Get <IAsyncTaskFactory>(); var connectionProvider = connectionProviderFactory(rebusLoggerFactory); var transport = new MySqlTransport(connectionProvider, tableName, inputQueueName, rebusLoggerFactory, asyncTaskFactory); transport.EnsureTableIsCreated(); return(transport); }); configurer.OtherService <ITimeoutManager>().Register(c => new DisabledTimeoutManager()); configurer.OtherService <IPipeline>().Decorate(c => { var pipeline = c.Get <IPipeline>(); return(new PipelineStepRemover(pipeline) .RemoveIncomingStep(s => s.GetType() == typeof(HandleDeferredMessagesStep))); }); }
public async Task CountTheConnections() { var activeConnections = new ConcurrentDictionary <int, object>(); var bus = Configure.With(new BuiltinHandlerActivator()) .Transport(t => t.Register(c => { var connectionProvider = new TestConnectionProvider(MySqlTestHelper.ConnectionString, activeConnections); var transport = new MySqlTransport(connectionProvider, "bimse", c.Get <IRebusLoggerFactory>(), c.Get <IAsyncTaskFactory>(), c.Get <IRebusTime>(), new MySqlTransportOptions(connectionProvider)); transport.EnsureTableIsCreated(); return(transport); })) .Start(); using (new Timer(_ => Console.WriteLine("Active connections: {0}", activeConnections.Count), null, 0, 1000)) { using (bus) { await Task.Delay(TimeSpan.FromSeconds(5)); } } }