Esempio n. 1
0
        public void TestMethod_InterfaceSendReceive()
        {
            string      testName   = "InterfaceSendReceive";
            const int   nMsgs      = 200;
            IConnection connection = new Connection(testTarget.Address);
            ISession    session    = connection.CreateSession();
            ISenderLink sender     = session.CreateSender("sender-" + testName, testTarget.Path);

            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);
            }

            IReceiverLink receiver = session.CreateReceiver("receiver-" + testName, testTarget.Path);

            for (int i = 0; i < nMsgs; ++i)
            {
                Message message = receiver.Receive();
                Trace.WriteLine(TraceLevel.Verbose, "receive: {0}", message.ApplicationProperties["sn"]);
                receiver.Accept(message);
            }

            connection.Close();
        }
Esempio n. 2
0
        public void Create(IMessageOptions options = null)
        {
            if (options != null)
            {
                if (options.Timeout > 0)
                {
                    this._timeout = options.Timeout;
                }
            }
            var nodeAddress = this.ParseRpcNodeAddress(this._amqpNode);

            this._amqpNode = nodeAddress.Address;
            if (!string.IsNullOrEmpty(nodeAddress.Subject))
            {
                this._subject = nodeAddress.Subject;
            }

            var _receiverSource = new Source()
            {
                Dynamic = true,
                Address = nodeAddress.Address
            };

            this._receiver = this._session.CreateReceiver(name: $"AmqpNetLiteRpcClientReceiver-{this._amqpNode}", source: _receiverSource, onAttached: OnReceiverLinkAttached);
            this._receiver.Start(credit: int.MaxValue, onMessage: this.processResponse);
            this._sender = this._session.CreateSender(name: $"AmqpNetLiteRpcClientSender-{this._amqpNode}", target: new Target(), onAttached: OnSenderLinkAttached);
            if (!_receiverAttached.WaitOne(this._receiverAttacheTimeout))
            {
                throw new Exception($"Failed to create receiver connection in {this._receiverAttacheTimeout}");
            }
        }
Esempio n. 3
0
 private void SendersListBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (sendersListBox.SelectedItem == null)
     {
         return;
     }
     senderLink = ((SenderLinkWrapper)sendersListBox.SelectedItem).SenderLink;
 }
Esempio n. 4
0
        protected override ILink CreateLink()
        {
            Attach frame = CreateAttachFrame();

            string linkName = producerInfo.Id + ":" + UriUtil.GetAddress(Destination, Session.Connection);

            link = new SenderLink(Session.InnerSession as Amqp.Session, linkName, frame, OnAttachedResp);

            return(link);
        }
Esempio n. 5
0
        private async void RemoveSender_Click(object sender, EventArgs e)
        {
            if (sendersListBox.SelectedItem == null)
            {
                return;
            }
            SenderLinkWrapper wrapper    = (SenderLinkWrapper)sendersListBox.SelectedItem;
            ISenderLink       senderLink = wrapper.SenderLink;

            if (senderLink.Equals(this.senderLink))
            {
                this.senderLink = null;
            }
            await senderLink.CloseAsync();

            senders.Remove(wrapper);
        }
 public AmqpSink(AmqpConfiguration amqpConfig, IConnection amqpConnection, ITextFormatter textFormatter, IFormatProvider formatProvider)
 {
     this._amqpConfig = amqpConfig;
     this._amqpClient = new AmqpClient();
     this._connection = amqpConnection;
     if (amqpConfig.IsRpc)
     {
         this._amqpClient.InitiateAmqpRpc(this._connection);
         this._rpcClient = this._amqpClient.CreateAmqpRpcClient(amqpNode: this._amqpConfig.QueueName);
     }
     else
     {
         this._amqpSession = amqpConnection.CreateSession();
         this._amqpSender  = this._amqpSession.CreateSender(name: "Amqp-Serilog.Sinks.Amqp", address: this._amqpConfig.QueueName);
     }
     this._textFormatter  = textFormatter;
     this._formatProvider = formatProvider;
 }
Esempio n. 7
0
        public void TestMethod_InterfaceSendReceiveOnAttach()
        {
            string    testName  = "InterfaceSendReceiveOnAttach";
            const int nMsgs     = 200;
            int       nAttaches = 0;

            OnAttached onAttached = (link, attach) => {
                nAttaches++;
            };

            IConnection connection = new Connection(testTarget.Address);
            ISession    session    = connection.CreateSession();
            ISenderLink sender     = session.CreateSender("sender-" + testName, new Target()
            {
                Address = testTarget.Path
            }, onAttached);

            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);
            }

            IReceiverLink receiver = session.CreateReceiver("receiver-" + testName, new Source()
            {
                Address = testTarget.Path
            }, onAttached);

            for (int i = 0; i < nMsgs; ++i)
            {
                Message message = receiver.Receive();
                Trace.WriteLine(TraceLevel.Verbose, "receive: {0}", message.ApplicationProperties["sn"]);
                receiver.Accept(message);
            }

            Assert.AreEqual(2, nAttaches);
            connection.Close();
        }
Esempio n. 8
0
        public async Task InterfaceSendReceiveAsync()
        {
            string testName = "BasicSendReceiveAsync";
            int    nMsgs    = 100;

            IConnectionFactory factory    = new ConnectionFactory();
            IConnection        connection = await factory.CreateAsync(this.testTarget.Address);

            ISession    session = connection.CreateSession();
            ISenderLink sender  = session.CreateSender("sender-" + testName, testTarget.Path);

            for (int i = 0; i < nMsgs; ++i)
            {
                Message message = new Message();
                message.Properties = new Properties()
                {
                    MessageId = "msg" + i, GroupId = testName
                };
                message.ApplicationProperties       = new ApplicationProperties();
                message.ApplicationProperties["sn"] = i;
                await sender.SendAsync(message);
            }

            IReceiverLink receiver = session.CreateReceiver("receiver-" + testName, testTarget.Path);

            for (int i = 0; i < nMsgs; ++i)
            {
                Message message = await receiver.ReceiveAsync(Timeout.InfiniteTimeSpan);

                Trace.WriteLine(TraceLevel.Information, "receive: {0}", message.ApplicationProperties["sn"]);
                receiver.Accept(message);
            }

            await sender.CloseAsync();

            await receiver.CloseAsync();

            await session.CloseAsync();

            await connection.CloseAsync();
        }
Esempio n. 9
0
 private void Connection_Closed(IAmqpObject sender, Error error)
 {
     status.Text        = "Closed";
     senderLink         = null;
     session            = null;
     connection.Closed -= Connection_Closed;
     connection         = null;
     for (int i = senders.Count - 1; i >= 0; i--)
     {
         senders.RemoveAt(i);
     }
     for (int i = receivers.Count - 1; i >= 0; i--)
     {
         receivers.RemoveAt(i);
     }
     BeginInvoke(new MethodInvoker(() =>
     {
         sendersListBox.DataSource   = null;
         receiversListBox.DataSource = null;
     }));
 }
Esempio n. 10
0
        private void AddSender()
        {
            if (session == null)
            {
                return;
            }
            Target sendTarget = new Target()
            {
                Address = senderLinkAddress.Text,
            };

            try
            {
                senderLink = new SenderLink(session, senderLinkName.Text, sendTarget, (link, attach) =>
                {
                });
                senders.Add(new SenderLinkWrapper(senderLink));
            }
            catch (AmqpException ex)
            {
                MessageBox.Show(this, ex.Message);
                return;
            }
        }
Esempio n. 11
0
 public SenderLinkWrapper(ISenderLink sender)
 {
     SenderLink = sender;
 }