@@ -18,6 +18,8 @@ namespace ServiceControl.Transports.ASBS;
1818using Azure . ResourceManager . Resources ;
1919using Azure . ResourceManager . ServiceBus ;
2020using BrokerThroughput ;
21+ using DnsClient ;
22+ using DnsClient . Protocol ;
2123using Microsoft . Extensions . Logging ;
2224
2325public class AzureQuery ( ILogger < AzureQuery > logger , TimeProvider timeProvider , TransportSettings transportSettings )
@@ -263,14 +265,25 @@ async Task<IReadOnlyList<MetricValue>> GetMetrics(string queueName, DateOnly sta
263265 public override async IAsyncEnumerable < IBrokerQueue > GetQueueNames (
264266 [ EnumeratorCancellation ] CancellationToken cancellationToken = default )
265267 {
268+ var validNamespaces = new HashSet < string > ( StringComparer . OrdinalIgnoreCase ) { serviceBusName } ;
269+
270+ var dnsLookup = new LookupClient ( ) ;
271+ var dnsResult = await dnsLookup . QueryAsync ( $ "{ serviceBusName } .servicebus.windows.net", QueryType . CNAME , cancellationToken : cancellationToken ) ;
272+ var domain = ( dnsResult . Answers . FirstOrDefault ( ) as CNameRecord ) ? . CanonicalName . Value ;
273+ if ( domain is not null && domain . EndsWith ( ".servicebus.windows.net." ) )
274+ {
275+ var otherName = domain . Split ( '.' ) . First ( ) ;
276+ validNamespaces . Add ( otherName ) ;
277+ }
278+
266279 SubscriptionResource ? subscription = await armClient ! . GetDefaultSubscriptionAsync ( cancellationToken ) ;
267280 var namespaces =
268281 subscription . GetServiceBusNamespacesAsync ( cancellationToken ) ;
269282
270283 await foreach ( var serviceBusNamespaceResource in namespaces . WithCancellation (
271284 cancellationToken ) )
272285 {
273- if ( serviceBusNamespaceResource . Data . Name == serviceBusName )
286+ if ( validNamespaces . Contains ( serviceBusNamespaceResource . Data . Name ) )
274287 {
275288 resourceId = serviceBusNamespaceResource . Id ;
276289 await foreach ( var queue in serviceBusNamespaceResource . GetServiceBusQueues ( )
0 commit comments