本文整理匯總了C#中RabbitMQ.Client.MessagePatterns.Subscription.Close方法的典型用法代碼示例。如果您正苦於以下問題:C# Subscription.Close方法的具體用法?C# Subscription.Close怎麽用?C# Subscription.Close使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類RabbitMQ.Client.MessagePatterns.Subscription
的用法示例。
在下文中一共展示了Subscription.Close方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: TestConsumerCancellationNotification
public void TestConsumerCancellationNotification()
{
var q = Guid.NewGuid().ToString();
this.Model.QueueDeclare(queue: q, durable: false, exclusive: false, autoDelete: false, arguments: null);
var sub = new Subscription(this.Model, q);
var latch = new ManualResetEvent(false);
sub.Consumer.ConsumerCancelled += (_sender, _args) =>
{
sub.Close();
latch.Set();
Conn.Close();
};
this.Model.QueueDelete(q);
Wait(latch, TimeSpan.FromSeconds(4));
}
示例2: StartListening
public void StartListening(Action<byte[], IDictionary<string, object>> onMessage)
{
if (this.IsListening)
throw new InvalidOperationException("Client is already listening for messages");
Action subscribeAction =
() =>
{
try
{
subscriptionLifetimeResetEvent.Reset();
Subscription subscriptionHandler = new Subscription(this.Connection.GetModel(), this.QueueName);
int waitForMessagesTimeout = 100;
this.loopControlResetEvent.Reset();
while (!loopControlResetEvent.IsSet)
{
try
{
BasicDeliverEventArgs delivery = null;
if (subscriptionHandler.Next(waitForMessagesTimeout, out delivery))
{
if (delivery == null)
continue;
// Deliver message
var p = CreateProperties(delivery);
onMessage(delivery.Body, p);
}
}
catch (ThreadAbortException)
{
// Nothing to do, thread is being aborted.
// Set the reset event to leave gracefully
loopControlResetEvent.Set();
}
catch (Exception)
{
// Any other exception should be ignored.
}
}
// Close the subscription if its still open
if (subscriptionHandler.Model.IsOpen)
{
subscriptionHandler.Close();
}
}
finally
{
subscriptionLifetimeResetEvent.Set();
}
};
this.currentSubscription = subscribeAction;
}