diff --git a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs index 7bf4fc5d9b..933e1bf005 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs @@ -92,6 +92,7 @@ public class ChannelPool : IChannelPool, ISingletonDependency { if (staleItem != null) { + staleItem.WaitIfInUse(TotalDisposeWaitDuration); await staleItem.DisposeAsync(); } } diff --git a/framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs b/framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs index 9e7b737d74..f631ce2d51 100644 --- a/framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs +++ b/framework/test/Volo.Abp.RabbitMQ.Tests/Volo/Abp/RabbitMQ/ChannelPool_Tests.cs @@ -40,13 +40,13 @@ public class ChannelPool_Tests var firstCaller = Task.Run(async () => { - barrier.SignalAndWait(); + barrier.SignalAndWait(RaceTimeout); using var accessor = await channelPool.AcquireAsync("q"); }); var secondCaller = Task.Run(async () => { - barrier.SignalAndWait(); + barrier.SignalAndWait(RaceTimeout); await Task.Delay(50); using var accessor = await channelPool.AcquireAsync("q"); }); @@ -85,7 +85,7 @@ public class ChannelPool_Tests { tasks[i] = Task.Run(async () => { - barrier.SignalAndWait(); + barrier.SignalAndWait(RaceTimeout); using var accessor = await channelPool.AcquireAsync("q"); return accessor.Channel; }); @@ -292,7 +292,7 @@ public class ChannelPool_Tests { tasks[i] = Task.Run(async () => { - barrier.SignalAndWait(); + barrier.SignalAndWait(RaceTimeout); using var accessor = await channelPool.AcquireAsync("q"); return accessor.Channel; });