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); }
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()); }
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 = "rFHsownm28o/6EvzpMkCF/7lhWWjbhS1RGHA2y5k" }; 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!"); }
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"); }
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); }
public void SetCurrentSetsCurrentField() { ResetFactory(); ResetConfig(); var mockFactory = new Mock <IMessagingScenarioFactory>(); MessagingScenarioFactory.SetCurrent(mockFactory.Object); MessagingScenarioFactory.Current.Should().BeSameAs(mockFactory.Object); }
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); }
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) { } } }
public void CreateDefaultMessagingScenarioFactoryUsesFallbackWhenNoConfig() { ResetFactory(); ResetConfig(); var mockFactory = new Mock <IMessagingScenarioFactory>(); MessagingScenarioFactory.SetFallback(mockFactory.Object); var factory = CallPrivateCreateDefault(); factory.Should().BeSameAs(mockFactory.Object); }
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); } } }
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); }
// 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"); }
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."); } }
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 }); }
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 }); }
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 { }
public TestSenderDecorator(string name, string senderName) : this(name, MessagingScenarioFactory.CreateSender(senderName)) { }