java - 使用 java sdk 的 Azure 服务总线的 Azure 托管标识

标签 java azure azure-servicebus-topics azure-managed-identity

如何使用 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/

相关文章:

azure - 如何确定要与 Azure 表单识别器服务一起使用的 Azure 训练模型。可以在同一个模型中训练多个布局吗?

node.js - 如何为 Function APP 生成 Azure Swagger UI

c# - C# 应用程序中的 Azure 服务故障日志

java - Ant中的"Unable to find a javac compiler"错误

java - 目录到字符串,Java

azure - 停用高级数据安全性

azure - 分区的 Azure 服务总线队列中允许的最大放置操作数是多少?

azure - 使用 Azure 服务总线对队列和主题/订阅进行消息排序传送

JavaFX SimpleSwingBrowser 自动调整网页

Java while 函数每1秒才执行一次