Skip to content

Commit 3cd1d32

Browse files
fixed bugs (Azure#46957)
* fixed bugs * PR feedback
1 parent 8841bb7 commit 3cd1d32

File tree

4 files changed

+29
-27
lines changed

4 files changed

+29
-27
lines changed

sdk/cloudmachine/Azure.CloudMachine/api/Azure.CloudMachine.netstandard2.0.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public CloudMachineWorkspace(Azure.Core.TokenCredential credential = null, Micro
1515
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
1616
public override bool Equals(object obj) { throw null; }
1717
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
18-
public override Azure.Core.ClientConnectionOptions GetConnectionOptions(System.Type clientType, string instanceId = null) { throw null; }
18+
public override Azure.Core.ClientConnectionOptions GetConnectionOptions(System.Type clientType, string instanceId) { throw null; }
1919
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
2020
public override int GetHashCode() { throw null; }
2121
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]

sdk/cloudmachine/Azure.CloudMachine/src/CloudMachineWorkspace.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,25 +66,27 @@ public CloudMachineWorkspace(TokenCredential credential = default, IConfiguratio
6666
/// <returns></returns>
6767
/// <exception cref="Exception"></exception>
6868
[EditorBrowsable(EditorBrowsableState.Never)]
69-
public override ClientConnectionOptions GetConnectionOptions(Type clientType, string instanceId = default)
69+
public override ClientConnectionOptions GetConnectionOptions(Type clientType, string instanceId)
7070
{
7171
string clientId = clientType.FullName;
72+
if (instanceId != null && instanceId.StartsWith("$")) clientId = $"{clientType.FullName}{instanceId}";
73+
7274
switch (clientId)
7375
{
7476
case "Azure.Security.KeyVault.Secrets.SecretClient":
75-
return new ClientConnectionOptions(new($"https://{this.Id}.vault.azure.net/"), Credential);
77+
return new ClientConnectionOptions(new($"https://{Id}.vault.azure.net/"), Credential);
7678
case "Azure.Messaging.ServiceBus.ServiceBusClient":
77-
return new ClientConnectionOptions(new($"https://{this.Id}.servicebus.windows.net"), Credential);
79+
return new ClientConnectionOptions(new($"https://{Id}.servicebus.windows.net"), Credential);
7880
case "Azure.Messaging.ServiceBus.ServiceBusSender":
79-
if (instanceId == default)
80-
instanceId = "cm_servicebus_subscription_private";
81-
return new ClientConnectionOptions(instanceId);
81+
return new ClientConnectionOptions(instanceId?? "cm_servicebus_default_topic");
82+
case "Azure.Messaging.ServiceBus.ServiceBusProcessor":
83+
return new ClientConnectionOptions("cm_servicebus_default_topic/cm_servicebus_subscription_default");
84+
case "Azure.Messaging.ServiceBus.ServiceBusProcessor$private":
85+
return new ClientConnectionOptions("cm_servicebus_topic_private/cm_servicebus_subscription_private");
8286
case "Azure.Storage.Blobs.BlobContainerClient":
83-
if (instanceId == default)
84-
instanceId = "default";
85-
return new ClientConnectionOptions(new($"https://{this.Id}.blob.core.windows.net/{instanceId}"), Credential);
87+
return new ClientConnectionOptions(new($"https://{Id}.blob.core.windows.net/{instanceId??"default"}"), Credential);
8688
case "Azure.AI.OpenAI.AzureOpenAIClient":
87-
return new ClientConnectionOptions(new($"https://{this.Id}.openai.azure.com"), Credential);
89+
return new ClientConnectionOptions(new($"https://{Id}.openai.azure.com"), Credential);
8890
case "OpenAI.Chat.ChatClient":
8991
return new ClientConnectionOptions(Id);
9092
case "OpenAI.Embeddings.EmbeddingClient":

sdk/cloudmachine/Azure.CloudMachine/src/CoreServices/MessagingServices.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void SendMessage(object serializable)
3737
/// <param name="received"></param>
3838
public void WhenMessageReceived(Action<string> received)
3939
{
40-
var processor = _cm.Messaging.GetServiceBusProcessor();
40+
var processor = _cm.Messaging.GetServiceBusProcessor(default);
4141
var cm = _cm;
4242

4343
// TODO: How to unsubscribe?
@@ -67,36 +67,34 @@ private ServiceBusSender GetServiceBusSender()
6767
return sender;
6868
}
6969

70-
internal ServiceBusProcessor GetServiceBusProcessor()
70+
internal ServiceBusProcessor GetServiceBusProcessor(string id)
7171
{
7272
MessagingServices messagingServices = this;
73-
ServiceBusProcessor sender = _cm.Subclients.Get(() => messagingServices.CreateProcessor());
74-
return sender;
73+
ServiceBusProcessor processor = _cm.Subclients.Get(() => messagingServices.CreateProcessor(id), id);
74+
return processor;
7575
}
7676

7777
private ServiceBusSender CreateSender()
7878
{
7979
ServiceBusClient client = GetServiceBusClient();
8080

81-
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusClient));
81+
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusSender), default);
8282
ServiceBusSender sender = client.CreateSender(connection.Id);
8383
return sender;
8484
}
8585
private ServiceBusClient CreateClient()
8686
{
87-
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusClient));
87+
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusClient), default);
8888
ServiceBusClient client = new(connection.Endpoint!.AbsoluteUri, connection.TokenCredential);
8989
return client;
9090
}
91-
private ServiceBusProcessor CreateProcessor()
91+
private ServiceBusProcessor CreateProcessor(string id)
9292
{
9393
ServiceBusClient client = GetServiceBusClient();
9494

95-
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusSender));
96-
ServiceBusProcessor processor = client.CreateProcessor(
97-
connection.Id,
98-
"cm_servicebus_subscription_private",
99-
new() { ReceiveMode = ServiceBusReceiveMode.PeekLock, MaxConcurrentCalls = 5 });
95+
ClientConnectionOptions connection = _cm.GetConnectionOptions(typeof(ServiceBusProcessor), id);
96+
string[] topicAndSubscription = connection.Id.Split('/');
97+
ServiceBusProcessor processor = client.CreateProcessor(topicAndSubscription[0], topicAndSubscription[1], new() { MaxConcurrentCalls = 5 });
10098
processor.ProcessErrorAsync += (args) => throw new Exception("error processing event", args.Exception);
10199
return processor;
102100
}

sdk/cloudmachine/Azure.CloudMachine/src/CoreServices/StorageServices.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Azure.Storage.Blobs;
1111
using Azure.Storage.Blobs.Models;
1212
using Azure.Storage.Blobs.Specialized;
13+
using Azure.Messaging.ServiceBus;
1314

1415
namespace Azure.CloudMachine;
1516

@@ -19,14 +20,15 @@ namespace Azure.CloudMachine;
1920
public readonly struct StorageServices
2021
{
2122
private readonly CloudMachineClient _cm;
23+
2224
internal StorageServices(CloudMachineClient cm) => _cm = cm;
2325

2426
private BlobContainerClient GetDefaultContainer()
2527
{
2628
CloudMachineClient cm = _cm;
2729
BlobContainerClient container = _cm.Subclients.Get(() =>
2830
{
29-
ClientConnectionOptions connection = cm.GetConnectionOptions(typeof(BlobContainerClient));
31+
ClientConnectionOptions connection = cm.GetConnectionOptions(typeof(BlobContainerClient), default);
3032
BlobContainerClient container = new(connection.Endpoint, connection.TokenCredential);
3133
return container;
3234
});
@@ -198,9 +200,9 @@ private static string ConvertPathToBlobPath(string path, BlobContainerClient con
198200
/// <param name="function"></param>
199201
public void WhenBlobUploaded(Action<StorageFile> function)
200202
{
201-
var processor = _cm.Messaging.GetServiceBusProcessor();
202-
var cm = _cm;
203-
203+
CloudMachineClient cm = _cm;
204+
// TODO (Pri 0): once the cache gets GCed, we will stop receiving events
205+
ServiceBusProcessor processor = cm.Messaging.GetServiceBusProcessor("$private");
204206
// TODO: How to unsubscribe?
205207
processor.ProcessMessageAsync += async (args) =>
206208
{

0 commit comments

Comments
 (0)