Esempio n. 1
0
        private static void SendAndReceiveOneMessage()
        {
            // Use a wait handle to pause the main thread while waiting for the message to be received.
            var waitHandle = new AutoResetEvent(false);

            var namedPipeProducer = MessagingScenarioFactory.CreateQueueProducer("Pipe1");
            var namedPipeConsumer = MessagingScenarioFactory.CreateQueueConsumer("Pipe1");

            namedPipeConsumer.MessageReceived += (sender, eventArgs) =>
            {
                var eventArgsMessage = eventArgs.Message;
                var message          = eventArgsMessage.GetStringValue();

                Console.WriteLine($"Message received: {message}");

                waitHandle.Set();
            };
            namedPipeConsumer.Start();

            namedPipeProducer.Send($"Named pipe test message from {typeof(Program).FullName}");

            waitHandle.WaitOne();

            namedPipeConsumer.Dispose();
            namedPipeProducer.Dispose();
            waitHandle.Dispose();

            Console.Write("Press any key to exit...");
            Console.ReadKey(true);
        }
Esempio n. 2
0
        public void IntegrationHappyPath()
        {
            var numberOfMessagesToSend   = 1000;
            var numberOfReceivedMessages = 0;
            var consumer1 = MessagingScenarioFactory.CreateQueueConsumer("test1");

            consumer1.MessageReceived += delegate(object sender, MessageReceivedEventArgs args)
            {
                numberOfReceivedMessages++;
                Console.WriteLine("1: " + args.Message.GetStringValue());
            };
            var consumer2 = MessagingScenarioFactory.CreateQueueConsumer("test1");

            consumer2.MessageReceived += delegate(object sender, MessageReceivedEventArgs args)
            {
                numberOfReceivedMessages++;
                Thread.Sleep(100);
                Console.WriteLine("2: " + args.Message.GetStringValue());
            };
            consumer2.Start();
            consumer1.Start();

            var producer = MessagingScenarioFactory.CreateQueueProducer("test1");

            for (int j = 0; j < numberOfMessagesToSend; j++)
            {
                producer.Send(j.ToString());
            }
            Thread.Sleep(10000);

            Assert.That(numberOfReceivedMessages, Is.EqualTo(numberOfMessagesToSend), numberOfReceivedMessages.ToString());
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            // The AWS credentials should be provide via a profile or other more secure means. This is only for example.
            // See http://http://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html
            var options = new CredentialProfileOptions
            {
                AccessKey = "AKIAJWXCD7ZCUGRQYCMA",
                SecretKey = "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"
            };
            var profile = new CredentialProfile("default", options)
            {
                Region = RegionEndpoint.USWest2
            };

            new NetSDKCredentialsFile().RegisterProfile(profile);

            var producer = MessagingScenarioFactory.CreateQueueProducer("queue");
            var consumer = MessagingScenarioFactory.CreateQueueConsumer("queue");

            consumer.Start();
            consumer.MessageReceived += (sender, eventArgs) =>
            {
                var eventArgsMessage = eventArgs.Message;
                var message          = eventArgsMessage.GetStringValue();

                Console.WriteLine($"Message: {message}");
            };

            producer.Send("Test SQS Message!");
        }
Esempio n. 4
0
        public void BuildFactoryCreatesSingleFactoryWithSingleFactoryMultiConfigsConfig()
        {
            ResetFactory();
            ResetConfig();

            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile(@"CustomConfigFiles\SingleFactory_MultiConfigs_appsettings.json", false, true);

            var config = builder.Build();

            Config.SetRoot(config);

            var factory = MessagingScenarioFactory.BuildFactory();

            factory.Should().NotBeNull();
            factory.Should().BeOfType <NamedPipeMessagingScenarioFactory>();
            factory.HasScenario("Pipe1").Should().BeTrue();
            factory.HasScenario("Pipe2").Should().BeTrue();
            factory.HasScenario("Pipe3").Should().BeFalse();

            var pipe1Sender = factory.CreateQueueProducer("Pipe1");

            _compressedField.GetValue(pipe1Sender).Should().Be(true);
            _pipeNameField.GetValue(pipe1Sender).Should().Be("PipeName1");

            var pipe2Sender = factory.CreateQueueProducer("Pipe2");

            _compressedField.GetValue(pipe2Sender).Should().Be(false);
            _pipeNameField.GetValue(pipe2Sender).Should().Be("PipeName2");
        }
Esempio n. 5
0
        private static void ResetFactory()
        {
            var factoryField = typeof(MessagingScenarioFactory).GetField("_messagingScenarioFactory", BindingFlags.NonPublic | BindingFlags.Static);
            var factory      = (Semimutable <IMessagingScenarioFactory>)factoryField.GetValue(null);

            factory.GetUnlockValueMethod().Invoke(factory, null);
            MessagingScenarioFactory.SetCurrent(null);
        }
Esempio n. 6
0
        public void SetCurrentSetsCurrentField()
        {
            ResetFactory();
            ResetConfig();

            var mockFactory = new Mock <IMessagingScenarioFactory>();

            MessagingScenarioFactory.SetCurrent(mockFactory.Object);

            MessagingScenarioFactory.Current.Should().BeSameAs(mockFactory.Object);
        }
Esempio n. 7
0
        public void MessagingScenarioFactoryPassThroughOnCreateTopicPublisher()
        {
            var mockReceiver = new Mock <ISender>();
            var mockFactory  = new Mock <IMessagingScenarioFactory>();

            mockFactory.Setup(mf => mf.CreateTopicPublisher(It.IsAny <string>())).Returns(mockReceiver.Object);

            ResetFactory();
            MessagingScenarioFactory.SetCurrent(mockFactory.Object);

            MessagingScenarioFactory.CreateTopicPublisher("test").Should().BeSameAs(mockReceiver.Object);
        }
Esempio n. 8
0
 private static void RunReceiver()
 {
     using (var receiver = MessagingScenarioFactory.CreateQueueConsumer("Pipe1"))
     {
         receiver.MessageReceived += (s, e) => Console.WriteLine(e.Message.GetStringValue());
         Console.WriteLine($"Receiving messages from receiver '{receiver.Name}'. Press <enter> to quit.");
         receiver.Start();
         while (Console.ReadKey(true).Key != ConsoleKey.Enter)
         {
         }
     }
 }
Esempio n. 9
0
        public void CreateDefaultMessagingScenarioFactoryUsesFallbackWhenNoConfig()
        {
            ResetFactory();
            ResetConfig();

            var mockFactory = new Mock <IMessagingScenarioFactory>();

            MessagingScenarioFactory.SetFallback(mockFactory.Object);

            var factory = CallPrivateCreateDefault();

            factory.Should().BeSameAs(mockFactory.Object);
        }
Esempio n. 10
0
 private static void RunSender()
 {
     using (var sender = MessagingScenarioFactory.CreateQueueProducer("Pipe1"))
     {
         Console.WriteLine($"Enter a message for sender '{sender.Name}'. Leave blank to quit.");
         string message;
         while (true)
         {
             Console.Write("message>");
             if ((message = Console.ReadLine()) == "")
             {
                 return;
             }
             sender.Send(message);
         }
     }
 }
Esempio n. 11
0
        public void MinimalistConfigsShouldBehaveAsExpected()
        {
            var  consumer  = MessagingScenarioFactory.CreateQueueConsumer("validReceiver");
            bool roundTrip = false;

            consumer.MessageReceived += (sender, args) => roundTrip = true;
            consumer.Start();
            var producer = MessagingScenarioFactory.CreateQueueProducer("validSender");

            for (int i = 0; i < 10; i++)
            {
                producer.Send("TestMessagePleaseIgnore");
            }

            Thread.Sleep(100);

            Assert.That(roundTrip);
        }
Esempio n. 12
0
        // using project reference for now, will change to nuget once we get Messaging Stable
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var namedPipeProducer = MessagingScenarioFactory.CreateQueueProducer("NampedPipeTester");
            var namedPipeConsumer = MessagingScenarioFactory.CreateQueueConsumer("NampedPipeTester");

            namedPipeConsumer.Start();
            namedPipeConsumer.MessageReceived += (sender, eventArgs) =>
            {
                var eventArgsMessage = eventArgs.Message;
                var message          = eventArgsMessage.GetStringValue();

                Console.WriteLine($"Message: {message}");
            };

            namedPipeProducer.Send("Test Named Pipe Message");
        }
Esempio n. 13
0
        public void CreateDefaultMessagingScenarioFactoryThrowsWhenNoConfigAndNoFallback()
        {
            ResetFactory();
            ResetConfig();

            MessagingScenarioFactory.SetFallback(null);

            try
            {
                CallPrivateCreateDefault();
            }
            catch (TargetInvocationException ex)
            {
                ex.InnerException.Should().BeOfType <InvalidOperationException>();
                ex.InnerException.Message.Should()
                .Be("MessagingScenarioFactory.Current has no value. The value can be set via config or by calling the SetCurrent method.");
            }
        }
Esempio n. 14
0
        private static async Task RunSender(List <IReceiver> receivers)
        {
            using (var sender = MessagingScenarioFactory.CreateSender("Sender"))
            {
                while (true)
                {
                    Console.WriteLine($"Enter a message for sender '{sender.Name}'. Add headers as a trailing JSON object. Leave blank to quit.");
                    Console.Write("message > ");
                    string message;
                    if ((message = Console.ReadLine()) == "")
                    {
                        break;
                    }

                    if (TryExtractHeaders(ref message, out var headers))
                    {
                        await sender.SendAsync(new SenderMessage(message) { Headers = headers });
                    }
Esempio n. 15
0
        private static void RunSender()
        {
            using (var sender = MessagingScenarioFactory.CreateSender("Sender1"))
            {
                Console.WriteLine($"Enter a message for sender '{sender.Name}'. Add headers as a trailing JSON object. Leave blank to quit.");
                string message;
                while (true)
                {
                    Console.Write("message>");
                    if ((message = Console.ReadLine()) == "")
                    {
                        return;
                    }

                    if (TryExtractHeaders(ref message, out var headers))
                    {
                        sender.Send(new SenderMessage(message)
                        {
                            Headers = headers
                        });
                    }
Esempio n. 16
0
            public TestSenderDecorator(string name, string senderName)
#pragma warning disable CA2000 // Dispose objects before losing scope
                : this(name, MessagingScenarioFactory.CreateSender(senderName))
#pragma warning restore CA2000 // Dispose objects before losing scope
            {
            }
Esempio n. 17
0
 public TestSenderDecorator(string name, string senderName)
     : this(name, MessagingScenarioFactory.CreateSender(senderName))
 {
 }