From 9088baa6d7bfb470c5b5dae262db94ebe819c377 Mon Sep 17 00:00:00 2001 From: Adam shamis Date: Fri, 1 Aug 2025 00:00:02 +0300 Subject: [PATCH] update connection string handling (#3871) Signed-off-by: adam6878 --- .../servicebusqueues/servicebusqueues.go | 2 +- common/component/azure/servicebus/client.go | 21 +++++++++++++++---- pubsub/azure/servicebus/queues/servicebus.go | 2 +- pubsub/azure/servicebus/topics/servicebus.go | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/bindings/azure/servicebusqueues/servicebusqueues.go b/bindings/azure/servicebusqueues/servicebusqueues.go index af2bc3b53..bc1291ac3 100644 --- a/bindings/azure/servicebusqueues/servicebusqueues.go +++ b/bindings/azure/servicebusqueues/servicebusqueues.go @@ -62,7 +62,7 @@ func (a *AzureServiceBusQueues) Init(ctx context.Context, metadata bindings.Meta return err } - a.client, err = impl.NewClient(a.metadata, metadata.Properties) + a.client, err = impl.NewClient(a.metadata, metadata.Properties, a.logger) if err != nil { return err } diff --git a/common/component/azure/servicebus/client.go b/common/component/azure/servicebus/client.go index 5ee1a77c4..c8b878e0a 100644 --- a/common/component/azure/servicebus/client.go +++ b/common/component/azure/servicebus/client.go @@ -16,6 +16,7 @@ package servicebus import ( "context" "fmt" + "strings" "sync" "time" @@ -40,7 +41,7 @@ type Client struct { } // NewClient creates a new Client object. -func NewClient(metadata *Metadata, rawMetadata map[string]string) (*Client, error) { +func NewClient(metadata *Metadata, rawMetadata map[string]string, log logger.Logger) (*Client, error) { client := &Client{ metadata: metadata, lock: &sync.RWMutex{}, @@ -86,9 +87,17 @@ func NewClient(metadata *Metadata, rawMetadata map[string]string) (*Client, erro } if !metadata.DisableEntityManagement { - client.adminClient, err = sbadmin.NewClient(metadata.NamespaceName, token, nil) - if err != nil { - return nil, err + if isAzureEmulator(metadata.ConnectionString) { + log.Warn( + "UseDevelopmentEmulator=true detected in connection string. " + + "Azure emulator does not support topic management APIs. " + + "Dapr will skip admin operations. " + + "To suppress this warning, explicitly set disableEntityManagement: true.") + } else { + client.adminClient, err = sbadmin.NewClient(metadata.NamespaceName, token, nil) + if err != nil { + return nil, err + } } } } @@ -394,3 +403,7 @@ func notEqual(a, b *bool) bool { } return *a != *b } + +func isAzureEmulator(connectionString string) bool { + return strings.Contains(strings.ToLower(connectionString), "usedevelopmentemulator=true") +} diff --git a/pubsub/azure/servicebus/queues/servicebus.go b/pubsub/azure/servicebus/queues/servicebus.go index 4af688e3c..342a4e227 100644 --- a/pubsub/azure/servicebus/queues/servicebus.go +++ b/pubsub/azure/servicebus/queues/servicebus.go @@ -57,7 +57,7 @@ func (a *azureServiceBus) Init(_ context.Context, metadata pubsub.Metadata) (err return err } - a.client, err = impl.NewClient(a.metadata, metadata.Properties) + a.client, err = impl.NewClient(a.metadata, metadata.Properties, a.logger) if err != nil { return err } diff --git a/pubsub/azure/servicebus/topics/servicebus.go b/pubsub/azure/servicebus/topics/servicebus.go index 2e6ceed6e..1f83add61 100644 --- a/pubsub/azure/servicebus/topics/servicebus.go +++ b/pubsub/azure/servicebus/topics/servicebus.go @@ -58,7 +58,7 @@ func (a *azureServiceBus) Init(_ context.Context, metadata pubsub.Metadata) (err return err } - a.client, err = impl.NewClient(a.metadata, metadata.Properties) + a.client, err = impl.NewClient(a.metadata, metadata.Properties, a.logger) if err != nil { return err }