Exemplo n.º 1
0
        BuiltinContainerAdapter GetBus(string inputQueueName, bool encryption, bool compression)
        {
            var adapter = new BuiltinContainerAdapter();

            MsmqUtil.PurgeQueue(inputQueueName);

            Configure.With(adapter)
            .Logging(l => l.ColoredConsole(LogLevel.Warn))
            .Transport(t => t.UseMsmq(inputQueueName, ErrorQueueName))
            .MessageOwnership(o => o.Use(this))
            .Decorators(d =>
            {
                // make this the first decoration step and thus the innermost decorator
                d.AddDecoration(b => b.SendMessages = new TellTaleSender(b.SendMessages));

                if (encryption)
                {
                    d.EncryptMessageBodies("NLEJVjDYnKfxEUAl2gxflFJfixHwh94iWDltaoayjTM=");
                }

                if (compression)
                {
                    d.CompressMessageBodies(0);
                }
            })
            .CreateBus()
            .Start();

            stuffToDispose.Add(adapter);

            return(adapter);
        }
Exemplo n.º 2
0
        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 ItHasBeenFixed()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                adapter.Handle<string>(s =>
                    {
                        throw new ApplicationException("Will trigger that the message gets moved to the error queue");
                    });

                Configure.With(adapter)
                         .Transport(t => t.UseRabbitMq(ConnectionString, "test.input", "test.error")
                                          .UseExchange("AlternativeExchange"))
                         .CreateBus()
                         .Start();

                adapter.Bus.SendLocal("hello there!!!");

                // wait until we're sure
                Thread.Sleep(2.Seconds());

                using (var errorQueue = new RabbitMqMessageQueue(ConnectionString, "test.error"))
                {
                    var serializer = new JsonMessageSerializer();
                    var receivedTransportMessage = errorQueue.ReceiveMessage(new NoTransaction());
                    receivedTransportMessage.ShouldNotBe(null);

                    var errorMessage = serializer.Deserialize(receivedTransportMessage);
                    errorMessage.Messages.Length.ShouldBe(1);
                    errorMessage.Messages[0].ShouldBeTypeOf<string>();
                    ((string)errorMessage.Messages[0]).ShouldBe("hello there!!!");
                }
            }
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        public void ItWorks()
        {
            using (AppConfig.Change(AppConfigPath))
                using (var adapter = new BuiltinContainerAdapter())
                {
                    var messageHandled = new ManualResetEvent(false);

                    adapter.Handle <string>(s => messageHandled.Set());

                    var bus = Configure.With(adapter)
                              .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                              .CreateBus()
                              .Start();

                    bus.SendLocal("hello there!");

                    messageHandled.WaitUntilSetOrDie(5.Seconds());
                }

            var auditedMessages = MsmqTestHelper
                                  .GetMessagesFrom(AuditQueue)
                                  .ToList();

            Assert.That(auditedMessages.Count, Is.EqualTo(1), "Expected to find exactly one copy of the sent message in the audit queue");
            Assert.That(auditedMessages.Single().Messages[0], Is.EqualTo("hello there!"));
        }
        public void RunTest(bool useLowLatencyBackoffStrategy, int iterations)
        {
            var adapter = new BuiltinContainerAdapter();
            var messageHasBeenReceived = new ManualResetEvent(false);
            adapter.Handle<string>(s => messageHasBeenReceived.Set());

            ConfigureBus(adapter, useLowLatencyBackoffStrategy);

            var bus = adapter.Bus;

            var recordedLatencies = new List<TimeSpan>();

            iterations.Times(() =>
            {
                // let things calm down
                Console.Write("Calming down.... ");
                Thread.Sleep(30.Seconds());

                Console.Write("Sending! ");
                var sendTime = DateTime.UtcNow;
                bus.SendLocal("w0000tamafooook!!1");

                Console.Write("waiting... ");
                messageHasBeenReceived.WaitUntilSetOrDie(20.Seconds());

                var elapsedUntilNow = sendTime.ElapsedUntilNow();
                Console.WriteLine("got the message - recorded latency of {0}", elapsedUntilNow);
                recordedLatencies.Add(elapsedUntilNow);
                messageHasBeenReceived.Reset();
            });

            Console.WriteLine("AVERAGE RECORDED LATENCY: {0:0.00} s", recordedLatencies.Average(t => t.TotalSeconds));
        }
Exemplo n.º 7
0
        public void ExchangeCreatedIfPusblishWithExchangePerType()
        {
            var exchangeName = typeof(TransportMessageToSend).FullName;

            using (var adapter = new BuiltinContainerAdapter())
            {
                DeleteQueue("test.input");
                DeleteQueue("test.error");
                DeleteExchange(exchangeName);

                var msg = new TransportMessageToSend {
                    Body = Encoding.GetBytes("this is a message!")
                };

                var bus = Configure.With(adapter)
                          .Transport(t => t.UseRabbitMq(ConnectionString, "test.input", "test.error")
                                     .ManageSubscriptions()
                                     .UseOneExchangePerMessageTypeRouting())
                          .CreateBus()
                          .Start();

                bus.Publish(msg);

                Assert.True(ExchangeExists(exchangeName));
            }
        }
        public void RunTest(bool useLowLatencyBackoffStrategy, int iterations)
        {
            var adapter = new BuiltinContainerAdapter();
            var messageHasBeenReceived = new ManualResetEvent(false);

            adapter.Handle <string>(s => messageHasBeenReceived.Set());

            ConfigureBus(adapter, useLowLatencyBackoffStrategy);

            var bus = adapter.Bus;

            var recordedLatencies = new List <TimeSpan>();

            iterations.Times(() =>
            {
                // let things calm down
                Console.Write("Calming down.... ");
                Thread.Sleep(30.Seconds());

                Console.Write("Sending! ");
                var sendTime = DateTime.UtcNow;
                bus.SendLocal("w0000tamafooook!!1");

                Console.Write("waiting... ");
                messageHasBeenReceived.WaitUntilSetOrDie(20.Seconds());

                var elapsedUntilNow = sendTime.ElapsedUntilNow();
                Console.WriteLine("got the message - recorded latency of {0}", elapsedUntilNow);
                recordedLatencies.Add(elapsedUntilNow);
                messageHasBeenReceived.Reset();
            });

            Console.WriteLine("AVERAGE RECORDED LATENCY: {0:0.00} s", recordedLatencies.Average(t => t.TotalSeconds));
        }
Exemplo n.º 9
0
        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);
                }
            }
        }
Exemplo n.º 10
0
        IContainerAdapter CreateAdapter()
        {
            var adapter = new BuiltinContainerAdapter();

            TrackDisposable(adapter);
            return(adapter);
        }
Exemplo n.º 11
0
        protected override void DoSetUp()
        {
            events = new ConcurrentQueue<string>();
            builtinContainerAdapter = new BuiltinContainerAdapter();

            TrackDisposable(builtinContainerAdapter);

            using (var q = new AzureServiceBusMessageQueue(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName))
            {
                q.Purge();
            }

            Configure.With(builtinContainerAdapter)
                .Logging(l => l.Console(minLevel: LogLevel.Info))
                .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName, "error"))
                .Events(e =>
                {
                    e.MessageContextEstablished += (bus, context) =>
                    {
                        WriteEvent("msg context established");

                        context.Disposed += () =>
                        {
                            WriteEvent("msg context disposed");
                        };
                    };

                    e.AddUnitOfWorkManager(new EventOutputtingUnitOfWorkManager(text => WriteEvent(text)));
                })
                .CreateBus().Start(1);
        }
Exemplo n.º 12
0
        protected override void DoSetUp()
        {
            events = new ConcurrentQueue <string>();
            builtinContainerAdapter = new BuiltinContainerAdapter();

            TrackDisposable(builtinContainerAdapter);

            using (var q = new AzureServiceBusMessageQueue(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName))
            {
                q.Purge();
            }

            Configure.With(builtinContainerAdapter)
            .Logging(l => l.Console(minLevel: LogLevel.Info))
            .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName, "error"))
            .Events(e =>
            {
                e.MessageContextEstablished += (bus, context) =>
                {
                    WriteEvent("msg context established");

                    context.Disposed += () =>
                    {
                        WriteEvent("msg context disposed");
                    };
                };

                e.AddUnitOfWorkManager(new EventOutputtingUnitOfWorkManager(text => WriteEvent(text)));
            })
            .CreateBus().Start(1);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
                }
            }
        }
Exemplo n.º 15
0
 protected override void DoSetUp()
 {
     resetEvent        = new ManualResetEvent(false);
     adapter           = TrackDisposable(new BuiltinContainerAdapter());
     logStatements     = new List <string>();
     unifOfWorkManager = new CustomizableThrowingUnifOfWorkManager();
 }
Exemplo n.º 16
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                adapter.Handle<string>(reply => Console.WriteLine("Got reply: {0}" + Environment.NewLine, reply));

                Configure.With(adapter)
                         .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                         .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                         .MessageOwnership(o => o.FromRebusConfigurationSection())
                         .CreateBus()
                         .Start();

                var bus = adapter.Bus;

                Console.WriteLine("Type a greeting + ENTER to send to server" + Environment.NewLine);

                while (true)
                {
                    var text = Console.ReadLine();

                    if (string.IsNullOrWhiteSpace(text)) break;

                    var greeting = new SensitiveMessage(text);

                    bus.Send(greeting);
                }
            }
        }
        public void ItHasBeenFixed()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                adapter.Handle <string>(s =>
                {
                    throw new ApplicationException("Will trigger that the message gets moved to the error queue");
                });

                Configure.With(adapter)
                .Transport(t => t.UseRabbitMq(ConnectionString, "test.input", "test.error")
                           .UseExchange("AlternativeExchange"))
                .CreateBus()
                .Start();

                adapter.Bus.SendLocal("hello there!!!");

                // wait until we're sure
                Thread.Sleep(2.Seconds());

                using (var errorQueue = new RabbitMqMessageQueue(ConnectionString, "test.error"))
                {
                    var serializer = new JsonMessageSerializer();
                    var receivedTransportMessage = errorQueue.ReceiveMessage(new NoTransaction());
                    receivedTransportMessage.ShouldNotBe(null);

                    var errorMessage = serializer.Deserialize(receivedTransportMessage);
                    errorMessage.Messages.Length.ShouldBe(1);
                    errorMessage.Messages[0].ShouldBeOfType <string>();
                    ((string)errorMessage.Messages[0]).ShouldBe("hello there!!!");
                }
            }
        }
        public void DoesNotUseTransactionScopeByDefault()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                var resetEvent = new ManualResetEvent(false);
                var transactionScopeDetected = false;

                adapter.Handle<string>(str =>
                    {
                        transactionScopeDetected = Transaction.Current != null;
                        resetEvent.Set();
                    });

                Configure.With(adapter)
                         .Transport(t => t.UseMsmq(InputQueueName, ErrorQueueName))
                         .CreateBus()
                         .Start();

                adapter.Bus.SendLocal("bla bla whatever");

                if (!resetEvent.WaitOne(2.Seconds()))
                {
                    Assert.Fail("Did not receive the message withing 2 second timeout!!");
                }

                transactionScopeDetected.ShouldBe(false);
            }
        }
Exemplo n.º 19
0
        public void ItWorks()
        {
            using (AppConfig.Change(AppConfigPath))
            using (var adapter = new BuiltinContainerAdapter())
            {
                var messageHandled = new ManualResetEvent(false);

                adapter.Handle<string>(s => messageHandled.Set());

                var bus = Configure.With(adapter)
                    .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                    .CreateBus()
                    .Start();

                bus.SendLocal("hello there!");

                messageHandled.WaitUntilSetOrDie(5.Seconds());
            }

            var auditedMessages = MsmqTestHelper
                .GetMessagesFrom(AuditQueue)
                .ToList();

            Assert.That(auditedMessages.Count, Is.EqualTo(1), "Expected to find exactly one copy of the sent message in the audit queue");
            Assert.That(auditedMessages.Single().Messages[0], Is.EqualTo("hello there!"));
        }
Exemplo n.º 20
0
 protected override void DoSetUp()
 {
     resetEvent = new ManualResetEvent(false);
     adapter = TrackDisposable(new BuiltinContainerAdapter());
     logStatements = new List<string>();
     unifOfWorkManager = new CustomizableThrowingUnifOfWorkManager();
 }
        protected override void DoSetUp()
        {
            RebusLoggerFactory.Current = new ConsoleLoggerFactory(false) { MinLevel = LogLevel.Warn };

            PurgeQueue(QueueName1);
            PurgeQueue(QueueName2);

            adapter1 = TrackDisposable(new BuiltinContainerAdapter());

            Configure.With(adapter1)
                     .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName1, "error"))
                     .CreateBus()
                     .Start();

            adapter2 = TrackDisposable(new BuiltinContainerAdapter());

            var receiverBus =
                (RebusBus)Configure
                               .With(adapter2)
                               .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName2, "error"))
                               .CreateBus();

            receiverBus.Start(10);

            RebusLoggerFactory.Current = new ConsoleLoggerFactory(false) {MinLevel = LogLevel.Warn};
        }
        protected override void DoSetUp()
        {
            RebusLoggerFactory.Current = new ConsoleLoggerFactory(false)
            {
                MinLevel = LogLevel.Warn
            };

            PurgeQueue(QueueName1);
            PurgeQueue(QueueName2);

            adapter1 = TrackDisposable(new BuiltinContainerAdapter());

            Configure.With(adapter1)
            .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName1, "error"))
            .CreateBus()
            .Start();

            adapter2 = TrackDisposable(new BuiltinContainerAdapter());

            var receiverBus =
                (RebusBus)Configure
                .With(adapter2)
                .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, QueueName2, "error"))
                .CreateBus();

            receiverBus.Start(10);

            RebusLoggerFactory.Current = new ConsoleLoggerFactory(false)
            {
                MinLevel = LogLevel.Warn
            };
        }
Exemplo n.º 23
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                adapter.Handle <string>(reply => Console.WriteLine("Got reply: {0}" + Environment.NewLine, reply));

                Configure.With(adapter)
                .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                .MessageOwnership(o => o.FromRebusConfigurationSection())
                .CreateBus()
                .Start();

                var bus = adapter.Bus;

                Console.WriteLine("Type a greeting + ENTER to send to server" + Environment.NewLine);
                while (true)
                {
                    var text = Console.ReadLine();

                    if (string.IsNullOrWhiteSpace(text))
                    {
                        break;
                    }

                    var greeting = new GreetingMessage(text);

                    bus.Send(greeting);
                }
            }
        }
Exemplo n.º 24
0
        public void CanBeConfiguredToHandleMessagesInsideTransactionScope()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                var resetEvent = new ManualResetEvent(false);
                var transactionScopeDetected = false;

                adapter.Handle <string>(str =>
                {
                    transactionScopeDetected = Transaction.Current != null;
                    resetEvent.Set();
                });

                Configure.With(adapter)
                .Transport(t => t.UseMsmq(InputQueueName, ErrorQueueName))
                .Behavior(b => b.HandleMessagesInsideTransactionScope())
                .CreateBus()
                .Start();

                adapter.Bus.SendLocal("bla bla whatever");

                if (!resetEvent.WaitOne(2.Seconds()))
                {
                    Assert.Fail("Did not receive the message withing 2 second timeout!!");
                }

                transactionScopeDetected.ShouldBe(true);
            }
        }
Exemplo n.º 25
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                Configure.With(adapter)
                .Logging(l => l.ColoredConsole(LogLevel.Error))
                .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                .Subscriptions(s => s.StoreInMongoDb("mongodb://localhost/warmcroc", "tradingSubs"))
                .CreateBus()
                .Start();

                Console.WriteLine("----Trading----");

                while (true)
                {
                    var counterpart = Input <string>("counterpart");
                    var amount      = Input <decimal>("amount");
                    var price       = Input <decimal>("price");

                    adapter.Bus.Publish(new NewTradeRecorded
                    {
                        TradeId     = Guid.NewGuid(),
                        Amount      = amount,
                        Counterpart = counterpart,
                        Price       = price
                    });
                }
            }
        }
Exemplo n.º 26
0
        IBus PullOneOutOfTheHat(string inputQueueName, Action <int> handler = null, bool oneExchangePerType = false, string inputExchange = null)
        {
            var adapter = new BuiltinContainerAdapter();

            if (handler != null)
            {
                adapter.Handle <SomeEvent>(e => handler(e.Number));
            }

            Configure.With(adapter)
            .Transport(t => {
                var obj = t.UseRabbitMq(ConnectionString, inputQueueName, "error").ManageSubscriptions();
                if (oneExchangePerType)
                {
                    obj.UseOneExchangePerMessageTypeRouting();
                }
                if (inputExchange != null)
                {
                    obj.UseExchangeAsInputAddress(inputExchange);
                }
            })
            .CreateBus().Start();

            TrackDisposable(adapter);

            return(adapter.Bus);
        }
Exemplo n.º 27
0
        IContainerAdapter CreateAdapter()
        {
            var adapter = new BuiltinContainerAdapter();

            disposables.Add(adapter);
            return(adapter);
        }
Exemplo n.º 28
0
        protected override void DoSetUp()
        {
            DropMessageTable();

            adapter1 = TrackDisposable(new BuiltinContainerAdapter());
            adapter2 = TrackDisposable(new BuiltinContainerAdapter());

            Configure
            .With(adapter1)
            .Logging(l => l.ColoredConsole(MinLogLevel))
            .Transport(t => t.UseSqlServer(ConnectionString, InputQueueName1, "error")
                       .EnsureTableIsCreated()
                       .PurgeInputQueue())
            .MessageOwnership(o => o.Use(this))
            .Behavior(b => b.SetMaxRetriesFor <Exception>(0))
            .CreateBus()
            .Start(NumberOfWorkers);

            Configure
            .With(adapter2)
            .Logging(l => l.ColoredConsole(MinLogLevel))
            .Transport(t => t.UseSqlServer(ConnectionString, InputQueueName2, "error")
                       .EnsureTableIsCreated()
                       .PurgeInputQueue())
            .MessageOwnership(o => o.Use(this))
            .Behavior(b => b.SetMaxRetriesFor <Exception>(0))
            .CreateBus()
            .Start(NumberOfWorkers);
        }
Exemplo n.º 29
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                adapter.Handle<Reply>(reply => Console.WriteLine("Got reply '{0}' (from OS process {1})", reply.KeyChar, reply.OsProcessId));

                Configure.With(adapter)
                    .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                    .Transport(t => t.UseSqlServer("server=.; database=rebus; trusted_connection=true", "producer.input", "error").EnsureTableIsCreated())
                    .MessageOwnership(o => o.FromRebusConfigurationSection())
                    .CreateBus()
                    .Start();

                Console.WriteLine("Press Q to quit or any other key to produce a job");
                while (true)
                {
                    var keyChar = char.ToLower(Console.ReadKey(true).KeyChar);

                    switch (keyChar)
                    {
                        case 'q':
                            goto quit;

                        default:
                            adapter.Bus.Send(new Job(keyChar));
                            break;
                    }
                }

            quit:
                Console.WriteLine("Quitting...");
            }
        }
Exemplo n.º 30
0
 public MathRequestClient(string server)
 {
     MQAdapter = new BuiltinContainerAdapter();
     Configure.With(MQAdapter)
     .Transport(t => t.UseRabbitMqInOneWayMode("amqp://" + server))      // we need send only
     .MessageOwnership(o => o.FromRebusConfigurationSection())
     .CreateBus().Start();
 }
Exemplo n.º 31
0
        public void CanConfigureNumberOfRetriesForExceptionTypes()
        {
            using (var adapter = new BuiltinContainerAdapter())
                using (var errorQueue = GetMessageQueue(ErrorQueueName))
                {
                    errorQueue.Purge();

                    using (var inputQueue = GetMessageQueue(TestCustomRetryCountInput))
                    {
                        inputQueue.Purge();
                    }

                    var bimCount      = 0;
                    var bomCount      = 0;
                    var bommelomCount = 0;

                    adapter.Handle <string>(str =>
                    {
                        if (str == "bim")
                        {
                            bimCount++;
                            throw new InvalidOperationException("bim!");
                        }

                        if (str == "bom")
                        {
                            bomCount++;
                            throw new ArgumentException("bom!");
                        }

                        bommelomCount++;
                        throw new ExpectationViolationException("bommelom!");
                    });

                    var bus = (RebusBus)
                              Configure.With(adapter)
                              .Logging(l => l.None())
                              .Transport(t => t.UseMsmq(TestCustomRetryCountInput, ErrorQueueName))
                              .Behavior(b => b.SetMaxRetriesFor <InvalidOperationException>(9)
                                        .SetMaxRetriesFor <ArgumentException>(7))
                              .CreateBus();

                    bus.Start(1);

                    adapter.Bus.SendLocal("bim");
                    adapter.Bus.SendLocal("bom");
                    adapter.Bus.SendLocal("bommelom");

                    // dequeue three messages
                    var first  = errorQueue.Receive(TimeSpan.FromSeconds(10));
                    var second = errorQueue.Receive(TimeSpan.FromSeconds(1));
                    var third  = errorQueue.Receive(TimeSpan.FromSeconds(1));

                    bimCount.ShouldBe(9);
                    bomCount.ShouldBe(7);
                    bommelomCount.ShouldBe(5); //< default
                }
        }
Exemplo n.º 32
0
        public void CanConfigureNumberOfRetriesForExceptionTypes()
        {
            using (var adapter = new BuiltinContainerAdapter())
            using (var errorQueue = GetMessageQueue(ErrorQueueName))
            {
                errorQueue.Purge();

                using (var inputQueue = GetMessageQueue(TestCustomRetryCountInput))
                {
                    inputQueue.Purge();
                }

                var bimCount = 0;
                var bomCount = 0;
                var bommelomCount = 0;

                adapter.Handle<string>(str =>
                    {
                        if (str == "bim")
                        {
                            bimCount++;
                            throw new InvalidOperationException("bim!");
                        }

                        if (str == "bom")
                        {
                            bomCount++;
                            throw new ArgumentException("bom!");
                        }

                        bommelomCount++;
                        throw new ExpectationViolationException("bommelom!");
                    });

                var bus = (RebusBus)
                          Configure.With(adapter)
                                   .Logging(l => l.None())
                                   .Transport(t => t.UseMsmq(TestCustomRetryCountInput, ErrorQueueName))
                                   .Behavior(b => b.SetMaxRetriesFor<InvalidOperationException>(9)
                                                   .SetMaxRetriesFor<ArgumentException>(7))
                                   .CreateBus();

                bus.Start(1);

                adapter.Bus.SendLocal("bim");
                adapter.Bus.SendLocal("bom");
                adapter.Bus.SendLocal("bommelom");

                // dequeue three messages
                var first = errorQueue.Receive(TimeSpan.FromSeconds(10));
                var second = errorQueue.Receive(TimeSpan.FromSeconds(1));
                var third = errorQueue.Receive(TimeSpan.FromSeconds(1));

                bimCount.ShouldBe(9);
                bomCount.ShouldBe(7);
                bommelomCount.ShouldBe(5); //< default
            }
        }
Exemplo n.º 33
0
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
                     .Transport(t => t.UseMsmq(QueueName, "error"))
                     .CreateBus()
                     .Start();

            bus = adapter.Bus;
        }
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();
            stuffToDispose.Add(adapter);

            startableBus = Configure.With(adapter)
                                    .Transport(t => t.UseRabbitMq(ConnectionString, "test-autodelete.input", "error")
                                                     .ManageSubscriptions()
                                                     .AutoDeleteInputQueue())
                                    .CreateBus();
        }
Exemplo n.º 35
0
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
            .Transport(t => t.UseMsmq(QueueName, "error"))
            .CreateBus()
            .Start();

            bus = adapter.Bus;
        }
Exemplo n.º 36
0
 public void VerifyItIsNotSo()
 {
     using (AppConfig.Change("Bugs\\Cfg\\empty-app.config"))
         using (var adapter = new BuiltinContainerAdapter())
         {
             Configure.With(adapter)
             .Transport(t => t.UseMsmq(InputQueueName, "error"))
             .CreateBus()
             .Start();
         }
 }
Exemplo n.º 37
0
 public void VerifyItIsNotSo()
 {
     using (AppConfig.Change("Bugs\\Cfg\\empty-app.config"))
     using (var adapter = new BuiltinContainerAdapter())
     {
         Configure.With(adapter)
             .Transport(t => t.UseMsmq(InputQueueName, "error"))
             .CreateBus()
             .Start();
     }
 }
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();
            stuffToDispose.Add(adapter);

            startableBus = Configure.With(adapter)
                           .Transport(t => t.UseRabbitMq(ConnectionString, "test-autodelete.input", "error")
                                      .ManageSubscriptions()
                                      .AutoDeleteInputQueue())
                           .CreateBus();
        }
        protected override void DoSetUp()
        {
            stuffToDispose = new List <IDisposable>();
            resetEvent     = new ManualResetEvent(false);

            adapter = new BuiltinContainerAdapter();
            Configure.With(adapter)
            .Transport(t => t.UseAzureServiceBus(ConnectionString, InputQueueName, ErrorQueueName))
            .Events(e => e.PoisonMessage += (b, m, i) => resetEvent.Set())
            .CreateBus()
            .Start();
        }
        protected override void DoSetUp()
        {
            resetEvent = new ManualResetEvent(false);

            adapter = TrackDisposable(new BuiltinContainerAdapter());

            Configure.With(adapter)
                     .Transport(t => t.UseAzureServiceBus(ConnectionString, InputQueueName, ErrorQueueName))
                     .Events(e => e.PoisonMessage += (b, m, i) => resetEvent.Set())
                     .CreateBus()
                     .Start();
        }
        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()
 {
     emittedLogStatements = new List<string>();
     adapter = TrackDisposable(new BuiltinContainerAdapter());
     resetEvent = new ManualResetEvent(false);
     Configure.With(adapter)
         .Logging(l => l.Use(new ListLoggerFactory(emittedLogStatements)))
         .Transport(t => t.UseMsmq(InputQueueName, "error"))
         .Events(e => e.AddUnitOfWorkManager(this))
         .Events(e => e.PoisonMessage += delegate { resetEvent.Set(); })
         .CreateBus()
         .Start();
 }
Exemplo n.º 43
0
 protected override void DoSetUp()
 {
     emittedLogStatements = new List <string>();
     adapter    = TrackDisposable(new BuiltinContainerAdapter());
     resetEvent = new ManualResetEvent(false);
     Configure.With(adapter)
     .Logging(l => l.Use(new ListLoggerFactory(emittedLogStatements)))
     .Transport(t => t.UseMsmq(InputQueueName, "error"))
     .Events(e => e.AddUnitOfWorkManager(this))
     .Events(e => e.PoisonMessage += delegate { resetEvent.Set(); })
     .CreateBus()
     .Start();
 }
Exemplo n.º 44
0
        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);
        }
Exemplo n.º 45
0
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            MsmqUtil.PurgeQueue(InputQueueName);

            Configure.With(adapter)
            .Transport(t => t.UseMsmq(InputQueueName, "error"))
            .Behavior(b => b.SetCurrentPrincipalWhenUserNameHeaderIsPresent())
            .CreateBus()
            .Start();

            bus = adapter.Bus;
        }
Exemplo n.º 46
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                Configure.With(adapter)
                .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                .Subscriptions(s => s.StoreInXmlFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "rebus_subscriptions.xml")))
                .CreateBus()
                .Start();

                var startupTime = DateTime.Now;

                while (true)
                {
                    Console.WriteLine(@"a) Publish string
b) Publish DateTime
c) Publish TimeSpan
q) Quit");

                    var keyChar = char.ToLower(Console.ReadKey(true).KeyChar);

                    switch (keyChar)
                    {
                    case 'a':
                        adapter.Bus.Publish("Hello there, I'm a publisher!");
                        break;

                    case 'b':
                        adapter.Bus.Publish(DateTime.Now);
                        break;

                    case 'c':
                        adapter.Bus.Publish(DateTime.Now - startupTime);
                        break;

                    case 'q':
                        goto consideredHarmful;

                    default:
                        Console.WriteLine("There's no option ({0})", keyChar);
                        break;
                    }
                }

                consideredHarmful :;
                Console.WriteLine("Quitting!");
            }
        }
Exemplo n.º 47
0
        static void Main()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                Configure.With(adapter)
                    .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                         .Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
                         .Subscriptions(s => s.StoreInXmlFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "rebus_subscriptions.xml")))
                         .CreateBus()
                         .Start();

                var startupTime = DateTime.Now;

                while (true)
                {
                    Console.WriteLine(@"a) Publish string
            b) Publish DateTime
            c) Publish TimeSpan
            q) Quit");

                    var keyChar = char.ToLower(Console.ReadKey(true).KeyChar);

                    switch (keyChar)
                    {
                        case 'a':
                            adapter.Bus.Publish("Hello there, I'm a publisher!");
                            break;

                        case 'b':
                            adapter.Bus.Publish(DateTime.Now);
                            break;

                        case 'c':
                            adapter.Bus.Publish(DateTime.Now - startupTime);
                            break;

                        case 'q':
                            goto consideredHarmful;

                        default:
                            Console.WriteLine("There's no option ({0})", keyChar);
                            break;
                    }
                }

            consideredHarmful: ;
                Console.WriteLine("Quitting!");
            }
        }
Exemplo n.º 48
0
        protected override void DoSetUp()
        {
            DeleteQueueIfExists();

            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
            .Transport(t => t.UseMsmq(QueueName, "error"))
            .MessageOwnership(o => o.Use(this))
            .EnableInlineReplyHandlers()
            .CreateBus()
            .Start();

            bus = adapter.Bus;
        }
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
            .Logging(l => l.ColoredConsole(LogLevel.Warn))
            .Transport(t => t.UseRabbitMq(RabbitMqFixtureBase.ConnectionString, InputQueueName, "error")
                       .ManageSubscriptions()
                       .PurgeInputQueue())
            .CreateBus()
            .Start();

            bus = adapter.Bus;
            bus.Subscribe <byte[]>();
        }
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
                     .Logging(l => l.ColoredConsole(LogLevel.Warn))
                     .Transport(t => t.UseRabbitMq(RabbitMqFixtureBase.ConnectionString, InputQueueName, "error")
                                      .ManageSubscriptions()
                                      .PurgeInputQueue())
                     .CreateBus()
                     .Start();

            bus = adapter.Bus;
            bus.Subscribe<byte[]>();
        }
Exemplo n.º 51
0
        protected override void DoSetUp()
        {
            adapter = TrackDisposable(new BuiltinContainerAdapter());

            MsmqUtil.EnsureMessageQueueExists(MsmqUtil.GetPath(AuditQueueName));
            MsmqUtil.PurgeQueue(AuditQueueName);
            MsmqUtil.PurgeQueue(InputQueueName);

            Configure.With(adapter)
                .Logging(l => l.ColoredConsole(minLevel:LogLevel.Warn))
                .Transport(t => t.UseMsmq(InputQueueName, "error"))
                .Behavior(b => b.EnableMessageAudit(AuditQueueName))
                .CreateBus()
                .Start(1);
        }
Exemplo n.º 52
0
        protected override void DoSetUp()
        {
            DeleteQueueIfExists();

            adapter = new BuiltinContainerAdapter();

            Configure.With(adapter)
                     .Transport(t => t.UseMsmq(QueueName, "error"))
                     .MessageOwnership(o => o.Use(this))
                     .EnableInlineReplyHandlers()
                     .CreateBus()
                     .Start();

            bus = adapter.Bus;
        }
Exemplo n.º 53
0
        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();
            }
        }
        protected override void DoSetUp()
        {
            recipientAdapter = TrackDisposable(new BuiltinContainerAdapter());

            senderAdapter = TrackDisposable(new BuiltinContainerAdapter());

            Configure.With(recipientAdapter)
                     .Transport(t => t.UseAzureServiceBus(AzureServiceBusMessageQueueFactory.ConnectionString, RecipientInputQueueName, "error"))
                     .CreateBus()
                     .Start();

            Configure.With(senderAdapter)
                     .Transport(t => t.UseAzureServiceBusInOneWayClientMode(AzureServiceBusMessageQueueFactory.ConnectionString))
                     .CreateBus()
                     .Start();
        }
Exemplo n.º 55
0
        protected override void DoSetUp()
        {
            adapter = TrackDisposable(new BuiltinContainerAdapter());

            Configure.With(adapter)
                .Transport(t => t.UseRabbitMq(RabbitMqFixtureBase.ConnectionString, InputQueueName, "error"))
                .Behavior(b => b.EnableMessageAudit(AuditQueueName))
                .CreateBus()
                .Start(1);

            RabbitMqFixtureBase.DeleteQueue(AuditQueueName);

            // make sure the receiver is in place at this point, ensuring that bindings'n'all are in place...
            auditQueueReceiver = TrackDisposable(new RabbitMqMessageQueue(RabbitMqFixtureBase.ConnectionString, AuditQueueName));
            auditQueueReceiver.Initialize();
        }
 protected override void DoSetUp()
 {
     logStatements = new List<string>();
     resetEvent = new ManualResetEvent(false);
     specialUnitOfWorkManager = new WillAlwaysThrowWhenCommitting();
     adapter = new BuiltinContainerAdapter();
     stuffToDispose = new List<IDisposable> {adapter};
     
     Configure.With(adapter)
              .Logging(l => l.Use(new ListLoggerFactory(logStatements)))
              .Transport(t => t.UseMsmq(InputQueueName, "error"))
              .Events(e => e.AddUnitOfWorkManager(specialUnitOfWorkManager))
              .Events(e => e.PoisonMessage += (bus, msg, info) => resetEvent.Set())
              .CreateBus()
              .Start(1);
 }
Exemplo n.º 57
0
        public void CanSkipCreatingTheErrorQueue()
        {
            using (var adapter = new BuiltinContainerAdapter())
            {
                const string errorTopic = "this_is_just_a_topic_now_not_a_queue";
                DeleteQueue(errorTopic);

                Configure.With(adapter)
                         .Transport(t => t.UseRabbitMq(ConnectionString, "test.input", errorTopic)
                                          .DoNotCreateErrorQueue())
                         .CreateBus()
                         .Start();

                Assert.That(QueueExists(errorTopic), Is.False, "Did not expect a queue to exist with the name '{0}'", errorTopic);
            }
        }
Exemplo n.º 58
0
        protected override void DoSetUp()
        {
            adapter = new BuiltinContainerAdapter();

            bus = Configure.With(adapter)
                           .Logging(l => l.ColoredConsole(LogLevel.Warn))
                           .Behavior(b => b.SetMaxRetriesFor<ApplicationException>(0))
                           .Transport(t => t.UseMsmq(InputQueueName, "error"))
                           .Subscriptions(s => s.Use(this))
                           .MessageOwnership(m => m.Use(this))
                           .CreateBus()
                           .Start();

            resetEvent = new ManualResetEvent(false);

            userName = "******";
        }
Exemplo n.º 59
0
        protected override void DoSetUp()
        {
            senderAdapter = new BuiltinContainerAdapter();
            Configure.With(senderAdapter)
                .Transport(t => t.UseMsmq(SenderInputQueueName, "error"))
                .Events(e =>
                    {
                        e.MessageMutators.Add(new EvilMutator("first"));
                        e.MessageMutators.Add(new EvilMutator("second"));
                        e.MessageMutators.Add(new EvilMutator("third"));
                    })
                .CreateBus().Start();

            receiverAdapter = new BuiltinContainerAdapter();
            Configure.With(receiverAdapter)
                .Transport(t => t.UseMsmq(ReceiverInputQueueName, "error"))
                .CreateBus().Start();
        }
Exemplo n.º 60
0
        protected override void DoSetUp()
        {
            bus1 = new BuiltinContainerAdapter();

            Configure.With(TrackDisposable(bus1))
                .Logging(l => l.ColoredConsole(minLevel:LogLevel.Warn))
                .Transport(t => t.UseTheFileSystem(playDir, InputQueueName, "error"))
                .CreateBus()
                .Start(10);

            bus2 = new BuiltinContainerAdapter();
            
            Configure.With(TrackDisposable(bus2))
                .Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
                .Transport(t => t.UseTheFileSystemInOneWayClientMode(playDir))
                .CreateBus()
                .Start();
        }