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 d795342c1d..85a11a0961 100644 --- a/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs +++ b/framework/src/Volo.Abp.RabbitMQ/Volo/Abp/RabbitMQ/ChannelPool.cs @@ -42,6 +42,17 @@ public class ChannelPool : IChannelPool, ISingletonDependency poolItem.Acquire(); + if (poolItem.Channel.IsClosed) + { + Channels.TryRemove(channelName, out _); + poolItem = Channels.GetOrAdd( + channelName, + _ => new ChannelPoolItem(CreateChannel(channelName, connectionName)) + ); + + poolItem.Acquire(); + } + return new ChannelAccessor( poolItem.Channel, channelName,