31
31
32
32
using System ;
33
33
using System . Collections . Generic ;
34
+ using System . Diagnostics ;
34
35
using System . Diagnostics . CodeAnalysis ;
35
36
using System . Linq ;
36
37
using System . Net . Security ;
@@ -544,24 +545,31 @@ public async Task<IConnection> CreateConnectionAsync(IEndpointResolver endpointR
544
545
CancellationToken cancellationToken = default )
545
546
{
546
547
ConnectionConfig config = CreateConfig ( clientProvidedName ) ;
548
+ using Activity ? connectionActivity = RabbitMQActivitySource . OpenConnection ( false ) ;
547
549
try
548
550
{
549
551
if ( AutomaticRecoveryEnabled )
550
552
{
551
- return await AutorecoveringConnection . CreateAsync ( config , endpointResolver , cancellationToken )
553
+ connectionActivity ? . SetTag ( "messaging.rabbitmq.connection.automatic_recovery" , true ) ;
554
+ return await AutorecoveringConnection . CreateAsync ( config , endpointResolver , connectionActivity , cancellationToken )
552
555
. ConfigureAwait ( false ) ;
553
556
}
554
557
else
555
558
{
559
+
560
+ connectionActivity ? . SetTag ( "messaging.rabbitmq.connection.automatic_recovery" , false ) ;
556
561
IFrameHandler frameHandler = await endpointResolver . SelectOneAsync ( CreateFrameHandlerAsync , cancellationToken )
557
562
. ConfigureAwait ( false ) ;
563
+ connectionActivity . SetNetworkTags ( frameHandler ) ;
558
564
var c = new Connection ( config , frameHandler ) ;
559
565
return await c . OpenAsync ( cancellationToken )
560
566
. ConfigureAwait ( false ) ;
561
567
}
562
568
}
563
569
catch ( OperationCanceledException ex )
564
570
{
571
+ connectionActivity ? . SetStatus ( ActivityStatusCode . Error ) ;
572
+ connectionActivity ? . AddException ( ex ) ;
565
573
if ( cancellationToken . IsCancellationRequested )
566
574
{
567
575
throw ;
@@ -573,7 +581,10 @@ public async Task<IConnection> CreateConnectionAsync(IEndpointResolver endpointR
573
581
}
574
582
catch ( Exception ex )
575
583
{
576
- throw new BrokerUnreachableException ( ex ) ;
584
+ var brokerUnreachableException = new BrokerUnreachableException ( ex ) ;
585
+ connectionActivity ? . SetStatus ( ActivityStatusCode . Error ) ;
586
+ connectionActivity ? . AddException ( brokerUnreachableException ) ;
587
+ throw brokerUnreachableException ;
577
588
}
578
589
}
579
590
0 commit comments