@@ -208,20 +208,13 @@ public async Task StartAsync()
208208
209209 _logger . LogWarning ( $ "[HybridClusterTransport] 消费者启动完成 - QueueName: { _queueName } , CurrentNodeId: { _nodeId } ") ;
210210
211- // Verify queue and consumer still exist after a short delay / 短暂延迟后验证队列和消费者是否仍然存在
212- await Task . Delay ( 500 ) ; // Wait 500ms to ensure consumer is fully registered / 等待 500ms 确保消费者已完全注册
213- await VerifyQueueAndConsumerAsync ( _queueName ) ;
214-
215211 // Start periodic binding health check / 启动定期绑定健康检查
216212 _bindingHealthCheckTimer = new Timer ( async _ => await CheckAndRepairBindingsAsync ( ) , null , TimeSpan . FromMinutes ( 1 ) , TimeSpan . FromMinutes ( 5 ) ) ;
217213
218214 // Wait a bit for initial node discovery / 等待初始节点发现
219215 _logger . LogWarning ( $ "[HybridClusterTransport] 等待初始节点发现... - NodeId: { _nodeId } ") ;
220216 await Task . Delay ( 2000 ) ; // Wait 2 seconds for initial discovery / 等待 2 秒进行初始发现
221217
222- // Verify queue and consumer still exist after discovery delay / 发现延迟后再次验证队列和消费者是否仍然存在
223- await VerifyQueueAndConsumerAsync ( _queueName ) ;
224-
225218 // Log discovered nodes / 记录发现的节点
226219 var discoveredNodes = GetKnownNodeIds ( ) ;
227220 _logger . LogWarning ( $ "[HybridClusterTransport] 初始节点发现完成 - NodeId: { _nodeId } , DiscoveredNodeCount: { discoveredNodes . Count } , DiscoveredNodes: { string . Join ( ", " , discoveredNodes ) } ") ;
@@ -1116,43 +1109,23 @@ private async Task VerifyQueueAndConsumerAsync(string queueName)
11161109 {
11171110 _logger . LogWarning ( $ "[HybridClusterTransport] 开始验证队列和消费者 - QueueName: { queueName } , CurrentNodeId: { _nodeId } ") ;
11181111
1119- // Verify connection is ready / 验证连接已就绪
1120- await _messageQueueService . VerifyConnectionAsync ( ) ;
1121-
1122- // Try to verify queue exists using passive declare / 尝试使用被动声明验证队列是否存在
1123- // This will throw if queue doesn't exist / 如果队列不存在会抛出异常
1112+ // 直接验证队列是否存在,不调用 VerifyConnectionAsync 避免死锁
1113+ // Directly verify queue exists, don't call VerifyConnectionAsync to avoid deadlock
1114+ // ConsumeAsync 内部会确保连接和 channel 就绪
1115+ // ConsumeAsync will ensure connection and channel are ready internally
11241116 try
11251117 {
1126- // Note: We can't directly check consumer count from HybridClusterTransport,
1127- // but we can verify the queue exists and re-create consumer if needed
1128- // 注意:我们无法直接从 HybridClusterTransport 检查消费者数量,
1129- // 但我们可以验证队列是否存在,并在需要时重新创建消费者
1130- await VerifyQueueExistsAsync ( queueName ) ;
1131-
1132- // Re-create consumer if it might have been lost / 如果消费者可能丢失,重新创建
1133- // This ensures consumer is always active / 这确保消费者始终处于活动状态
1118+ // 尝试重新创建消费者,如果消费者已存在会跳过
1119+ // Try to recreate consumer, will skip if consumer already exists
11341120 _logger . LogWarning ( $ "[HybridClusterTransport] 重新验证消费者 - QueueName: { queueName } , CurrentNodeId: { _nodeId } ") ;
11351121 await _messageQueueService . ConsumeAsync ( queueName , HandleMessageAsync , autoAck : false , currentNodeId : _nodeId ) ;
11361122
11371123 _logger . LogWarning ( $ "[HybridClusterTransport] 队列和消费者验证成功 - QueueName: { queueName } , CurrentNodeId: { _nodeId } ") ;
11381124 }
11391125 catch ( Exception ex )
11401126 {
1141- _logger . LogError ( ex , $ "[HybridClusterTransport] 队列或消费者验证失败,尝试恢复 - QueueName: { queueName } , CurrentNodeId: { _nodeId } , Error: { ex . Message } ") ;
1142-
1143- // Try to recover by re-declaring queue and re-creating consumer / 尝试通过重新声明队列和重新创建消费者来恢复
1144- try
1145- {
1146- _logger . LogWarning ( $ "[HybridClusterTransport] 尝试恢复队列和消费者 - QueueName: { queueName } , CurrentNodeId: { _nodeId } ") ;
1147- await VerifyQueueExistsAsync ( queueName ) ;
1148- await _messageQueueService . ConsumeAsync ( queueName , HandleMessageAsync , autoAck : false , currentNodeId : _nodeId ) ;
1149- _logger . LogWarning ( $ "[HybridClusterTransport] 队列和消费者恢复成功 - QueueName: { queueName } , CurrentNodeId: { _nodeId } ") ;
1150- }
1151- catch ( Exception recoverEx )
1152- {
1153- _logger . LogError ( recoverEx , $ "[HybridClusterTransport] 队列和消费者恢复失败 - QueueName: { queueName } , CurrentNodeId: { _nodeId } , Error: { recoverEx . Message } ") ;
1154- throw ;
1155- }
1127+ _logger . LogWarning ( ex , $ "[HybridClusterTransport] 消费者验证失败(可能已存在),跳过 - QueueName: { queueName } , CurrentNodeId: { _nodeId } , Error: { ex . Message } ") ;
1128+ // 消费者可能已存在,这是正常的 / Consumer might already exist, this is normal
11561129 }
11571130 }
11581131 catch ( Exception ex )
@@ -1183,7 +1156,7 @@ private async Task VerifyQueueExistsAsync(string queueName)
11831156 // Try to declare queue again to verify it exists / 尝试再次声明队列以验证它是否存在
11841157 // This will return the existing queue if it exists, or create it if it doesn't
11851158 // 如果队列存在则返回现有队列,如果不存在则创建它
1186- var verifiedQueueName = await _messageQueueService . DeclareQueueAsync ( queueName , durable : false , exclusive : false , autoDelete : true ) ;
1159+ var verifiedQueueName = await _messageQueueService . DeclareQueueAsync ( queueName , durable : false , exclusive : false , autoDelete : false ) ;
11871160
11881161 if ( string . IsNullOrEmpty ( verifiedQueueName ) )
11891162 {
0 commit comments