in src/NMS.AMQP/Provider/Amqp/AmqpProvider.cs [181:223]
public async Task DestroyResource(INmsResource resourceInfo)
{
switch (resourceInfo)
{
case NmsSessionInfo sessionInfo:
{
AmqpSession session = connection.GetSession(sessionInfo.Id);
await session.CloseAsync().Await();
return;
}
case NmsConsumerInfo consumerInfo:
{
AmqpSession session = connection.GetSession(consumerInfo.SessionId);
AmqpConsumer consumer = session.GetConsumer(consumerInfo.Id);
await consumer.CloseAsync().Await();;
session.RemoveConsumer(consumerInfo.Id);
return;
}
case NmsProducerInfo producerInfo:
{
AmqpSession session = connection.GetSession(producerInfo.SessionId);
AmqpProducer producer = session.GetProducer(producerInfo.Id);
await producer.CloseAsync().Await();;
session.RemoveProducer(producerInfo.Id);
return;
}
case NmsTemporaryDestination temporaryDestination:
{
AmqpTemporaryDestination amqpTemporaryDestination = connection.GetTemporaryDestination(temporaryDestination);
if (amqpTemporaryDestination != null)
{
await amqpTemporaryDestination.CloseAsync().Await();;
connection.RemoveTemporaryDestination(temporaryDestination);
}
else
Tracer.Debug($"Could not find temporary destination {temporaryDestination} to delete.");
return;
}
default:
throw new ArgumentOutOfRangeException(nameof(resourceInfo), "Not supported resource type.");
}
}