protected override void DoSetUp() { SqlServerFixtureBase.DropTable(SagaIndex); SqlServerFixtureBase.DropTable(SagaTable); var busConnection = AzureServiceBusMessageQueueFactory.ConnectionString; var sqlConnection = SqlServerFixtureBase.ConnectionString; using (var azureQueue = new AzureServiceBusMessageQueue(busConnection, InputQueueName)) { azureQueue.Purge(); } allRepliesReceived = new ManualResetEvent(false); adapter = new BuiltinContainerAdapter(); adapter.Register(() => new RequestHandler(adapter.Bus)); sagaPersister = new SqlServerSagaPersister(sqlConnection, SagaIndex, SagaTable).EnsureTablesAreCreated(); Configure.With(TrackDisposable(adapter)) .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn)) .Transport(t => t.UseAzureServiceBus(busConnection, InputQueueName, "error")) .Sagas(s => s.Use(sagaPersister)) .CreateBus() .Start(3); }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new ChargeTheCustomer(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(LogLevel.Error)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .Sagas(s => s.StoreInMongoDb("mongodb://localhost/billing") .SetCollectionName <BillingSagaData>("billingSagas")) .Timeouts(t => t.StoreInMongoDb("mongodb://localhost/billing", "timeouts")) .CreateBus() .Start(); Console.WriteLine("----Billing----"); adapter.Bus.Subscribe <NewTradeRecorded>(); adapter.Bus.Subscribe <TradeConfirmed>(); adapter.Bus.Subscribe <TradeRejected>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { XmlConfigurator.Configure(); using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(typeof (RandomReplyHandler)); Configure.With(adapter) .Logging(l => l.Log4Net()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); var bus = adapter.Bus; while (true) { Console.WriteLine("Press (a) to send a request and (q) to quit"); var c = Console.ReadKey(true).KeyChar; if (c == 'q') break; var request = new SomeRandomRequest(); bus.Send(request); } } }
static void Main() { XmlConfigurator.Configure(); using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(typeof(RandomReplyHandler)); Configure.With(adapter) .Logging(l => l.Log4Net()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); var bus = adapter.Bus; while (true) { Console.WriteLine("Press (a) to send a request and (q) to quit"); var c = Console.ReadKey(true).KeyChar; if (c == 'q') { break; } var request = new SomeRandomRequest(); bus.Send(request); } } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new ChargeTheCustomer(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(LogLevel.Error)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .Sagas(s => s.StoreInMongoDb("mongodb://localhost/billing") .SetCollectionName<BillingSagaData>("billingSagas")) .Timeouts(t => t.StoreInMongoDb("mongodb://localhost/billing", "timeouts")) .CreateBus() .Start(); Console.WriteLine("----Billing----"); adapter.Bus.Subscribe<NewTradeRecorded>(); adapter.Bus.Subscribe<TradeConfirmed>(); adapter.Bus.Subscribe<TradeRejected>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
public void SagasWorksAsUsual() { // Arrange var resetEvent = new ManualResetEvent(false); DeclareQueue(QueueName); MySaga.MyHandle = resetEvent; adapter.Register(typeof(MySaga)); // Act adapter.Bus.Send(new DummyMessage { Message = "hello there!" }); // Assert if (!resetEvent.WaitOne(3.Seconds())) { Assert.Fail("Did not receive message within 3 seconds of waiting!"); } }
static BuiltinContainerAdapter StartResponseServer(string server) { // client Rebus configuration var adapter = new BuiltinContainerAdapter(); Configure.With(adapter) .Transport(t => t.UseRabbitMq("amqp://" + server, "MathResponses", "MathResponseErrors")) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus().Start(); // register all relevant message handlers adapter.Register(typeof(MathResponseCallHandler)); return adapter; }
static BuiltinContainerAdapter StartResponseServer(string server) { // client Rebus configuration var adapter = new BuiltinContainerAdapter(); Configure.With(adapter) .Transport(t => t.UseRabbitMq("amqp://" + server, "MathResponses", "MathResponseErrors")) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus().Start(); // register all relevant message handlers adapter.Register(typeof(MathResponseCallHandler)); return(adapter); }
protected override void DoSetUp() { adapter = TrackDisposable(new BuiltinContainerAdapter()); DropTables(); adapter.Register(typeof(MySaga)); Configure.With(adapter) .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn)) .Transport(t => t.UseMsmq(InputQueueName, ErrorQueueName)) .Sagas(s => s.StoreInSqlServer(ConnectionString, "sagas", "saga_index") .EnsureTablesAreCreated()) .CreateBus() .Start(); }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new GreetingHandler(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .CreateBus() .Start(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new GreetingHandler(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .CreateBus() .Start(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { XmlConfigurator.Configure(); using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new RandomRequestHandler(adapter.Bus)); Configure.With(adapter) .Logging(l => l.Log4Net()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .CreateBus() .Start(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { XmlConfigurator.Configure(); using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new RandomRequestHandler(adapter.Bus)); Configure.With(adapter) .Logging(l => l.Log4Net()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .CreateBus() .Start(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(typeof(Handler)); Configure.With(adapter) .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); adapter.Bus.Subscribe <string>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
public void CanHandleSagaMessageWithinTransactionScope() { using (var adapter = new BuiltinContainerAdapter()) { //Arrange adapter.Register(typeof(TestSaga)); var bus = CreateBus(adapter, InputQueueName); bus.Start(1).Subscribe <TestSagaMessage>(); Thread.Sleep(1000); //Wait for subscription message to be processed // Act adapter.Bus.Publish(new TestSagaMessage()); Thread.Sleep(1000); //Wait for message to be processed // Assert Assert.That(() => ExecuteScalar(string.Format("select count(*) from {0}", SagaTableName)), Is.EqualTo(1).After(12000, 500)); } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(typeof(ChargeTheCustomer)); Configure.With(adapter) .Logging(l => l.None()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); Console.WriteLine("----Billing----"); adapter.Bus.Subscribe <NewTradeRecorded>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new CheckCreditStatus(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(LogLevel.Error)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); Console.WriteLine("----Confirmations----"); adapter.Bus.Subscribe<NewTradeRecorded>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) { adapter.Register(() => new CheckCreditStatus(adapter.Bus)); Configure.With(adapter) .Logging(l => l.ColoredConsole(LogLevel.Error)) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(o => o.FromRebusConfigurationSection()) .CreateBus() .Start(); Console.WriteLine("----Confirmations----"); adapter.Bus.Subscribe <NewTradeRecorded>(); Console.WriteLine("Press ENTER to quit"); Console.ReadLine(); } }
static void Main(string[] args) { // we have the container in a variable, but you would probably stash it in a static field somewhere using (var adapter = new BuiltinContainerAdapter()) { Configure.With(adapter) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(d => d.FromRebusConfigurationSection()) .CreateBus().Start(); adapter.Register(typeof(Handlers.PrintDateTime)); var timer = new System.Timers.Timer(); timer.Elapsed += delegate { adapter.Bus.SendLocal(DateTime.Now); }; timer.Interval = 1000; timer.Start(); Console.WriteLine("Press enter to quit"); Console.ReadLine(); } //< always dispose bus when your app quits - here done via the container adapter }
static void Main() { using (var adapter = new BuiltinContainerAdapter()) using (var timer = new Timer()) { adapter.Register(() => new PrintDateTime()); var bus = Configure.With(adapter) .Logging(l => l.None()) .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig()) .MessageOwnership(d => d.FromRebusConfigurationSection()) .CreateBus() .Start(); timer.Elapsed += delegate { bus.Send(DateTime.Now); }; timer.Interval = 1000; timer.Start(); Console.WriteLine("Press enter to quit"); Console.ReadLine(); } }
public void Register <TService, TImplementation>() where TService : class where TImplementation : TService { builtinContainerAdapter.Register(typeof(TImplementation)); }