Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 10
0
        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();
        }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
        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();
            }
        }
Ejemplo n.º 13
0
        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();
        }
Ejemplo n.º 14
0
        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();
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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();
        }
Ejemplo n.º 17
0
        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();
        }
Ejemplo n.º 18
0
        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!");
        }
Ejemplo n.º 19
0
        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();
        }
Ejemplo n.º 20
0
        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();
        }
Ejemplo n.º 21
0
        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>());
            }
        }
Ejemplo n.º 22
0
        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();
            }
        }
Ejemplo n.º 23
0
        /// <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);
            }
        }
Ejemplo n.º 24
0
            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();
            }
Ejemplo n.º 25
0
        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();
        }
Ejemplo n.º 27
0
        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.");
        }
Ejemplo n.º 28
0
        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();
            }
        }
Ejemplo n.º 29
0
        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();
        }
Ejemplo n.º 30
0
        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();
        }