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(); }
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}"); } }
private void SendersListBox_SelectedIndexChanged(object sender, EventArgs e) { if (sendersListBox.SelectedItem == null) { return; } senderLink = ((SenderLinkWrapper)sendersListBox.SelectedItem).SenderLink; }
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); }
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; }
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(); }
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(); }
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; })); }
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; } }
public SenderLinkWrapper(ISenderLink sender) { SenderLink = sender; }