static void Main(string[] args) { //Create host and register custom transport listener var uri = new Uri(address); var host = new ContainerHost(new List <Uri>() { uri }, null, uri.UserInfo); host.CustomTransports.Add("pipe", NamedPipeTransport.Listener); host.RegisterMessageProcessor(nodeName, new MessageProcessor()); host.Open(); Console.WriteLine("Listener: running"); //Create factory with custom transport factory var factory = new ConnectionFactory(new TransportProvider[] { NamedPipeTransport.Factory }); var connection = factory.CreateAsync(new Address(address)).GetAwaiter().GetResult(); var session = new Session(connection); var sender = new SenderLink(session, "message-client", nodeName); Console.WriteLine("Client: sending a message"); sender.Send(new Message("Hello Pipe!")); sender.Close(); session.Close(); connection.Close(); Console.WriteLine("Client: closed"); host.Close(); Console.WriteLine("Listener: closed"); }
public void TestMethod_DynamicReceiverLink() { string testName = "DynamicReceiverLink"; Connection connection = new Connection(testTarget.Address); Session session = new Session(connection); string remoteSource = null; ManualResetEvent attached = new ManualResetEvent(false); OnAttached onAttached = (link, attach) => { remoteSource = ((Source)attach.Source).Address; attached.Set(); }; ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, new Source() { Dynamic = true }, onAttached); attached.WaitOne(10000); Assert.IsTrue(remoteSource != null, "dynamic source not attached"); SenderLink sender = new SenderLink(session, "sender-" + testName, remoteSource); Message message = new Message("hello"); sender.Send(message); message = receiver.Receive(); Assert.IsTrue(message != null, "no message was received."); receiver.Accept(message); sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public void TestMethod_ReceiveWaiter() { string testName = "ReceiveWaiter"; Connection connection = new Connection(address); Session session = new Session(connection); ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, "q1"); Thread t = new Thread(() => { Message message = receiver.Receive(); Trace.WriteLine(TraceLevel.Information, "receive: {0}", message.Properties.MessageId); receiver.Accept(message); }); t.Start(); SenderLink sender = new SenderLink(session, "sender-" + testName, "q1"); Message msg = new Message() { Properties = new Properties() { MessageId = "123456" } }; sender.Send(msg, null, null); t.Join(10000); sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public void TestMethod_ConnectionFrameSize() { string testName = "ConnectionFrameSize"; const int nMsgs = 200; Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-" + testName, "q1"); int frameSize = 16 * 1024; for (int i = 0; i < nMsgs; ++i) { Message message = new Message(new string('A', frameSize + (i - nMsgs / 2))); sender.Send(message, null, null); } ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, "q1"); for (int i = 0; i < nMsgs; ++i) { Message message = receiver.Receive(); string value = (string)message.Body; Trace.WriteLine(TraceLevel.Information, "receive: {0}x{1}", value[0], value.Length); receiver.Accept(message); } sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public void TestMethod_ConnectionFrameSize() { string testName = "ConnectionFrameSize"; const int nMsgs = 200; int frameSize = 4 * 1024; Connection connection = new Connection(testTarget.Address, null, new Open() { ContainerId = "c1", MaxFrameSize = (uint)frameSize }, null); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-" + testName, testTarget.Path); for (int i = 0; i < nMsgs; ++i) { Message message = new Message(new string('A', frameSize + (i - nMsgs / 2))); sender.Send(message, null, null); } ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, testTarget.Path); for (int i = 0; i < nMsgs; ++i) { Message message = receiver.Receive(); string value = (string)message.Body; Trace.WriteLine(TraceLevel.Verbose, "receive: {0}x{1}", value[0], value.Length); receiver.Accept(message); } sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public void DuplicateLinkNameSameSessionTest() { string name = "DuplicateLinkNameSameSessionTest"; this.host.RegisterMessageProcessor(name, new TestMessageProcessor(500000, null)); string linkName = "same-send-link"; var connection = new Connection(Address); var session = new Session(connection); var sender1 = new SenderLink(session, linkName, name); sender1.Send(new Message("msg1"), SendTimeout); try { var sender2 = new SenderLink(session, linkName, name); Assert.IsTrue(false, "Excpected exception not thrown"); } catch (AmqpException ae) { Assert.AreEqual((Symbol)ErrorCode.NotAllowed, ae.Error.Condition); } sender1.Close(); session.Close(); connection.Close(); }
public void ContainerHostUnknownProcessorTest() { string name = MethodInfo.GetCurrentMethod().Name; this.host.RegisterMessageProcessor("message" + name, new TestMessageProcessor()); this.host.RegisterRequestProcessor("request" + name, new TestRequestProcessor()); var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", name); try { sender.Send(new Message("test")); Assert.IsTrue(false, "exception not thrown"); } catch (AmqpException exception) { Assert.IsTrue(exception.Error != null, "Error is null"); Assert.AreEqual((Symbol)ErrorCode.NotFound, exception.Error.Condition, "Wrong error code"); } sender.Close(); session.Close(); connection.Close(); }
public void Send(Email email) { var nameSpace = _settings.ServiceBus.NamespaceUrl; var keyName = _settings.ServiceBus.KeyName; var keyValue = _settings.ServiceBus.KeyValue; var entity = _settings.ServiceBus.Entity; var port = _settings.ServiceBus.Port; var address = new Address(nameSpace, port, keyName, keyValue); var connection = new Connection(address); var amqpSession = new Session(connection); var sender = new SenderLink(amqpSession, "lykkestreams-emailsender", entity); var message = new Message(JsonConvert.SerializeObject(email)); sender.Send(message); Console.WriteLine("Message sent to Service Bus"); sender.Close(); amqpSession.Close(); connection.Close(); }
static void Main(string[] args) { string address = "amqp://*****:*****@localhost:5672"; Connection connection = new Connection(new Address(address)); Session session = new Session(connection); SenderLink producerLink = new SenderLink(session, "test-sender", "amqp1"); producerLink.AddClosedCallback((sender, error) => { if (sender.IsClosed) { System.Console.WriteLine(error.Description); } }); Message message1 = new Message("Hello AMQP!"); message1.MessageAnnotations = new Amqp.Framing.MessageAnnotations(); message1.MessageAnnotations.Map.Add("metadata", "meatadata"); message1.Header = new Amqp.Framing.Header(); message1.Header.DeliveryCount = 0; //senderLink.Send(message1); //expiring message sending producerLink.Send(message1, TimeSpan.FromMinutes(5)); Console.WriteLine("Hello World!"); producerLink.Close(); Thread.Sleep(5000); }
private static void WorkerThread() { // parse Azure IoT Hub Map settings to AMQP protocol settings string hostName = _hubName + ".azure-devices.net"; string userName = _deviceId + "@sas." + _hubName; string senderAddress = "devices/" + _deviceId + "/messages/events"; string receiverAddress = "devices/" + _deviceId + "/messages/deviceBound"; Connection connection = new Connection(new Address(hostName, 5671, userName, _sasToken)); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "send-link", senderAddress); ReceiverLink receiver = new ReceiverLink(session, "receive-link", receiverAddress); receiver.Start(100, OnMessage); while (true) { // wait for button press sendMessage.WaitOne(); // compose message Message message = new Message(); message.ApplicationProperties = new Amqp.Framing.ApplicationProperties(); message.ApplicationProperties["temperature"] = temperature; // send message with temperature sender.Send(message, null, null); } // the loop won't reach here, just kept here for the ceremony sender.Close(); session.Close(); connection.Close(); }
static void Main(string[] args) { string url = (args.Length > 0) ? args[0] : "amqp://localhost:5672"; int count = (args.Length > 2) ? Convert.ToInt32(args[2]) : 10; Address peerAddr = new Address(url); Connection connection = new Connection(peerAddr); Session session = new Session(connection); Map filters = new Map(); filters.Add(new Symbol("store123"), new DescribedValue(new Symbol("apache.org:selector-filter:string"), "store = 123")); Source ordersSource123 = new Source() { Address = "orders", FilterSet = filters }; ordersSource123.DistributionMode = new Symbol("move"); filters = new Map(); filters.Add(new Symbol("store456"), new DescribedValue(new Symbol("apache.org:selector-filter:string"), "store = 456")); Source ordersSource456 = new Source() { Address = "orders", FilterSet = filters }; ordersSource456.DistributionMode = new Symbol("move"); SenderLink sender = new SenderLink(session, "sender", "orders"); ReceiverLink biReceiver = new ReceiverLink(session, "BI", "orders"); ReceiverLink otherReceiver = new ReceiverLink(session, "other-service", "orders"); ReceiverLink store123Receiver = new ReceiverLink(session, "s123", ordersSource123, null); ReceiverLink store456Receiver = new ReceiverLink(session, "s456", ordersSource456, null); Message message = new Message("order placed for store 123"); message.ApplicationProperties = new ApplicationProperties(); message.ApplicationProperties["store"] = 123; sender.Send(message); message = new Message("order placed for store 456"); message.ApplicationProperties = new ApplicationProperties(); message.ApplicationProperties["store"] = 456; sender.Send(message); LogReceivedMessage(biReceiver); LogReceivedMessage(otherReceiver); LogReceivedMessage(biReceiver); LogReceivedMessage(otherReceiver); LogReceivedMessage(store123Receiver); LogReceivedMessage(store456Receiver); sender.Close(); store123Receiver.Close(); store456Receiver.Close(); biReceiver.Close(); session.Close(); connection.Close(); }
public static void Send() { Address address = new Address("amqp://*****:*****@localhost:5672"); Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-link", "immobile"); var serializer = new AmqpSerializer(new ContractResolver() { PrefixList = new[] { "Sender" } }); try { for (int i = 0; i < 1000; i++) { var cliente = new Cliente() { Crm = i.ToString(), Nome = "Fulano", Status = false }; SendMessage(sender, "Cliente", cliente, serializer); Console.WriteLine("Enviado o cliente: \n{0}", cliente.ToString()); } } finally { sender.Close(); session.Close(); connection.Close(); } }
public void run() { // Send the messages ManualResetEvent senderAttached = new ManualResetEvent(false); OnAttached onSenderAttached = (l, a) => { senderAttached.Set(); }; Address address = new Address(string.Format("amqp://{0}", brokerUrl)); Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "Lite-amqp-large-content-test-sender", new Target() { Address = queueName }, onSenderAttached); if (senderAttached.WaitOne(10000)) { foreach (Message message in AllMessages()) { sender.Send(message); } } else { throw new ApplicationException(string.Format( "Time out attaching to test broker {0} queue {1}", brokerUrl, queueName)); } sender.Close(); session.Close(); connection.Close(); }
static void Main(string[] args) { string url = (args.Length > 0) ? args[0] : "amqp://*****:*****@127.0.0.1:5672"; string target = (args.Length > 1) ? args[1] : "request"; Address peerAddr = new Address(url); Connection connection = new Connection(peerAddr); Session session = new Session(connection); Message msg = new Message("Request Response"); msg.Properties = new Properties(); msg.Properties.ReplyTo = "response"; SenderLink sender = new SenderLink(session, "send-1", target); sender.Send(msg); sender.Close(); session.Close(); connection.Close(); }
public void ContainerHostTargetLinkEndpointTest() { string name = "ContainerHostTargetLinkEndpointTest"; List <Message> messages = new List <Message>(); this.linkProcessor = new TestLinkProcessor( link => new TargetLinkEndpoint(new TestMessageProcessor(50, messages), link)); this.host.RegisterLinkProcessor(this.linkProcessor); int count = 190; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", "any"); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, SendTimeout); } sender.Close(); session.Close(); connection.Close(); Assert.AreEqual(count, messages.Count); }
public void TestMethod_ConnectionWithIPAddress() { string testName = "ConnectionWithIPAddress"; const int nMsgs = 20; Address address = new Address("127.0.0.1", 5672, "guest", "guest", "/", "amqp"); Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-" + testName, "q1"); for (int i = 0; i < nMsgs; ++i) { Message message = new Message("msg" + i); message.Properties = new Properties() { GroupId = "abcdefg" }; message.ApplicationProperties = new ApplicationProperties(); message.ApplicationProperties["sn"] = i; sender.Send(message, null, null); } ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, "q1"); for (int i = 0; i < nMsgs; ++i) { Message message = receiver.Receive(); Trace.WriteLine(TraceLevel.Verbose, "receive: {0}", message.ApplicationProperties["sn"]); receiver.Accept(message); } sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public void ContainerHostSessionFlowControlTest() { string name = "ContainerHostSessionFlowControlTest"; this.host.RegisterMessageProcessor(name, new TestMessageProcessor(500000, null)); // this test assumes that nMsgs is greater than session's window size int nMsgs = 10000; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", name); for (int i = 0; i < nMsgs; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, SendTimeout); } sender.Close(); session.Close(); connection.Close(); }
public void TestMethod_LinkReopen() { string testName = "LinkReopen"; Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender", "q1"); sender.Send(new Message("test") { Properties = new Properties() { MessageId = testName } }); sender.Close(); sender = new SenderLink(session, "sender", "q1"); sender.Send(new Message("test2") { Properties = new Properties() { MessageId = testName } }); sender.Close(); session.Close(0); connection.Close(); Assert.IsTrue(connection.Error == null, "connection has error!"); }
public void ContainerHostLinkProcessorTest() { string name = MethodInfo.GetCurrentMethod().Name; this.host.RegisterLinkProcessor(new TestLinkProcessor()); int count = 80; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", TestLinkProcessor.Name); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, SendTimeout); } sender.Close(); session.Close(); connection.Close(); }
static void Main(string[] args) { string broker = args.Length >= 1 ? args[0] : "amqp://localhost:8583"; string address = args.Length >= 2 ? args[1] : "address.helloworld"; Address brokerAddr = new Address(broker); Connection connection = new Connection(brokerAddr); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "dotnetclient-sender", address); ReceiverLink receiver = new ReceiverLink(session, "dotnetclient-receiver", address); Message helloOut = new Message("This is an AMQP message sent by a Dot Net client!"); sender.Send(helloOut); Message helloIn = receiver.Receive(); receiver.Accept(helloIn); Console.WriteLine(helloIn.Body.ToString()); receiver.Close(); sender.Close(); session.Close(); connection.Close(); }
public void ContainerHostMessageProcessorTest() { string name = MethodInfo.GetCurrentMethod().Name; var processor = new TestMessageProcessor(); this.host.RegisterMessageProcessor(name, processor); int count = 500; var connection = new Connection(Address); var session = new Session(connection); var sender = new SenderLink(session, "send-link", name); for (int i = 0; i < count; i++) { var message = new Message("msg" + i); message.Properties = new Properties() { GroupId = name }; sender.Send(message, SendTimeout); } sender.Close(); session.Close(); connection.Close(); Assert.AreEqual(count, processor.Messages.Count); for (int i = 0; i < count; i++) { var message = processor.Messages[i]; Assert.AreEqual("msg" + i, message.GetBody <string>()); } }
private void SendCommand() { string audience = Fx.Format("{0}/messages/devicebound", HOST); string resourceUri = Fx.Format("{0}/messages/devicebound", HOST); string sasToken = GetSharedAccessSignature(SHARED_ACCESS_KEY_NAME, SHARED_ACCESS_KEY, resourceUri, new TimeSpan(1, 0, 0)); bool cbs = PutCbsToken(connection, HOST, sasToken, audience); if (cbs) { string to = Fx.Format("/devices/{0}/messages/devicebound", DEVICE_ID); string entity = "/messages/devicebound"; SenderLink senderLink = new SenderLink(session, "sender-link", entity); var messageValue = Encoding.UTF8.GetBytes("i am a command."); Message message = new Message() { BodySection = new Data() { Binary = messageValue } }; message.Properties = new Properties(); message.Properties.To = to; message.Properties.MessageId = Guid.NewGuid().ToString(); message.ApplicationProperties = new ApplicationProperties(); message.ApplicationProperties["iothub-ack"] = "full"; senderLink.Send(message); senderLink.Close(); } }
/// <summary> /// Standard receiving /// </summary> /// <param name="receiver">receiver link</param> /// <param name="options">receiver options</param> private void Receive(ReceiverLink receiver, ReceiverOptions options) { int nReceived = 0; Message message; while (((message = receiver.Receive(options.Timeout)) != null) && (nReceived < options.MsgCount || options.MsgCount == 0)) { if (options.Duration > 0) { Utils.Sleep4Next(ts, options.MsgCount, options.Duration, nReceived + 1); } receiver.Accept(message); Formatter.LogMessage(message, options); nReceived++; if (options.ProcessReplyTo) { SenderLink sender = new SenderLink(session, "reply-to-sender", message.Properties.ReplyTo); sender.Send(message); sender.Close(); } if ((options.MsgCount > 0) && (nReceived == options.MsgCount)) { break; } Utils.TsSnapStore(this.ptsdata, 'F', options.LogStats); } }
void RunOnce(int id) { Connection connection = this.CreateConnection(new Address(this.Args.Address)); Session session = new Session(connection); Attach attach = new Attach() { Source = new Source(), Target = new Target() { Address = this.Args.Node }, SndSettleMode = this.Args.SenderMode, RcvSettleMode = this.Args.ReceiverMode }; SenderLink sender = new SenderLink(session, "perf-test-sender" + id, attach, null); for (int i = 1; i <= this.Args.Queue; i++) { if (this.OnStart()) { var message = this.CreateMessage(); sender.Send(message, onOutcome, Tuple.Create(this, sender)); } } this.Wait(); sender.Close(); session.Close(); connection.Close(); }
public void TestMethod_DynamicSenderLink() { string testName = "DynamicSenderLink"; Connection connection = new Connection(testTarget.Address); Session session = new Session(connection); string targetAddress = null; OnAttached onAttached = (link, attach) => { targetAddress = ((Target)attach.Target).Address; }; SenderLink sender = new SenderLink(session, "sender-" + testName, new Target() { Dynamic = true }, onAttached); Message message = new Message("hello"); sender.Send(message); Assert.IsTrue(targetAddress != null, "dynamic target not attached"); ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, targetAddress); message = receiver.Receive(); Assert.IsTrue(message != null, "no message was received."); receiver.Accept(message); sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
void SendMessages(int count, string[] sessionIds) { Trace.WriteLine(TraceLevel.Information, "Establishing a connection..."); Connection connection = new Connection(this.GetAddress()); Trace.WriteLine(TraceLevel.Information, "Creating a session..."); Session session = new Session(connection); Trace.WriteLine(TraceLevel.Information, "Creating a sender link..."); SenderLink sender = new SenderLink(session, "sessionful-sender-link", this.Entity); Trace.WriteLine(TraceLevel.Information, "Sending {0} messages...", count); for (int i = 0; i < count; i++) { Message message = new Message(); message.Properties = new Properties() { GroupId = sessionIds[i % sessionIds.Length] }; message.BodySection = new Data() { Binary = Encoding.UTF8.GetBytes("msg" + i) }; sender.Send(message); } Trace.WriteLine(TraceLevel.Information, "Finished sending. Shutting down..."); Trace.WriteLine(TraceLevel.Information, ""); sender.Close(); session.Close(); connection.Close(); }
public void TestMethod_SendEmptyMessage() { string testName = "SendEmptyMessage"; Connection connection = new Connection(testTarget.Address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-" + testName, testTarget.Path); bool threwArgEx = false; try { sender.Send(new Message()); } catch (ArgumentException) { threwArgEx = true; } finally { sender.Close(); session.Close(); connection.Close(); } Assert.IsTrue(threwArgEx, "Should throw an argument exception when sending an empty message."); }
public void SendMessage(string deviceId, SumpPumpSettings message) { Address address = new Address(Configuration.HostName, Port, null, null); Connection connection = new Connection(address); Session session = new Session(connection); string uri = Fx.Format("{0}/messages/devicebound", Configuration.HostName); string token = GetSharedAccessSignature(Configuration.SharedAccessKeyName, Configuration.SharedAccessKey, uri, new TimeSpan(1, 0, 0)); bool cbs = PutToken(connection, Configuration.HostName, token, uri); if (cbs) { string toAddress = Fx.Format("/devices/{0}/messages/devicebound", deviceId); SenderLink senderLink = new SenderLink(session, "sender-link", "/messages/devicebound"); var testMessage = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)); Message amqpMessage = new Message() { BodySection = new Amqp.Framing.Data() { Binary = testMessage } }; amqpMessage.Properties = new Properties() { To = toAddress, MessageId = Guid.NewGuid().ToString() }; amqpMessage.ApplicationProperties = new ApplicationProperties(); amqpMessage.ApplicationProperties["iothub-ack"] = "full"; senderLink.Send(amqpMessage); senderLink.Close(); } }
public void TestMethod_BasicSendReceive() { string testName = "BasicSendReceive"; const int nMsgs = 200; Connection connection = new Connection(address); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "sender-" + testName, "q1"); for (int i = 0; i < nMsgs; ++i) { Message message = new Message("msg" + i); message.Properties = new Properties() { GroupId = "abcdefg" }; message.ApplicationProperties = new ApplicationProperties(); message.ApplicationProperties["sn"] = i; sender.Send(message, null, null); } ReceiverLink receiver = new ReceiverLink(session, "receiver-" + testName, "q1"); for (int i = 0; i < nMsgs; ++i) { Message message = receiver.Receive(); Trace.WriteLine(TraceLevel.Information, "receive: {0}", message.ApplicationProperties["sn"]); receiver.Accept(message); } sender.Close(); receiver.Close(); session.Close(); connection.Close(); }
public static void Main(string[] args) { String url = (args.Length > 0) ? args[0] : "amqps://127.0.0.1:443"; String address = (args.Length > 1) ? args[1] : "myqueue"; Trace.TraceLevel = TraceLevel.Frame; Trace.TraceListener = (l, f, a) => Console.WriteLine( DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, a)); Connection.DisableServerCertValidation = true; Connection connection = new Connection(new Address(url)); Session session = new Session(connection); SenderLink sender = new SenderLink(session, "test-sender", address); Message messageSent = new Message("Test Message"); sender.Send(messageSent); ReceiverLink receiver = new ReceiverLink(session, "test-receiver", address); Message messageReceived = receiver.Receive(TimeSpan.FromSeconds(2)); Console.WriteLine(messageReceived.Body); receiver.Accept(messageReceived); sender.Close(); receiver.Close(); session.Close(); connection.Close(); }