如何使用 Java 中的 Azure 托管标识向主题发送消息? 现在我使用connectionString 将消息发送到主题。
ServiceBusSenderClient senderClient = new ServiceBusClientBuilder()
.connectionString(connectionString)
.sender()
.topicName(topicName)
.buildClient();
在Azure SDK for java中,我只能找到这个例子,它是针对服务总线队列的
ServiceBusSenderAsyncClient sender = new ServiceBusClientBuilder()
.credential("<<fully-qualified-namespace>>", credential)
.sender()
.queueName("<<queue-name>>")
.buildAsyncClient();
最佳答案
你的第二个片段大部分是正确的;您错过了创建传递给构建器的凭据的步骤。 Authorizing with DefaultAzureCredential 中对此进行了讨论。概述部分,如下所示:
TokenCredential credential = new DefaultAzureCredentialBuilder()
.build();
ServiceBusReceiverAsyncClient receiver = new ServiceBusClientBuilder()
.credential("<<fully-qualified-namespace>>", credential)
.receiver()
.queueName("<<queue-name>>")
.buildAsyncClient();
服务总线可以使用 Azure.Identity credentials 中的任何一个用于授权。演示 DefaultAzureCredentialBuilder
只是因为它是一个链式凭据,可以在各种场景中取得成功。更多信息可参见Azure.Identity overview .
如果您希望将授权限制为仅托管身份,则可以使用 ManagedIdentityCredentialBuilder
而不是默认凭据来实现。可以找到创建的示例 here 。然后可以按照与默认凭据相同的方式将其传递到服务总线。
关于java - 使用 java sdk 的 Azure 服务总线的 Azure 托管标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71272293/