繁体   English   中英

使用托管标识连接 Azure 服务总线时出现 NumberFormatException

[英]NumberFormatException in connecting Azure Service Bus using Managed Identity

我正在尝试使用托管身份从我的网络作业连接到 Azure 服务总线。 但不幸的是,我收到以下错误

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: For input string: "10/10/2020 6:50:38 AM +00:00"

我已启用身份并分配了参与者角色以连接到服务总线。 此外,在代码中,我使用 ClientSettings 创建与服务总线的连接。

ClientFactory.createMessageReceiverFromEntityPathAsync(namespace, queueName,new ClientSettings(TokenProvider.createManagedServiceIdentityTokenProvider()), ReceiveMode.RECEIVEANDDELETE).get();

知道如何解决此异常,因为它是从内置 class ManagedServiceIdentityTokenProvider抛出的。 任何帮助都会非常有帮助。

提前致谢。

编辑 -我将服务总线 package 更新为 3.2.0。 现在我看不到 NumberFormatException 但我得到java.lang.RuntimeException: java.net.SocketException: Permission denied: connect即使我已经为 webjob 提供了“所有者”角色。

如果要将 Azure 服务总线与 Azure 托管标识连接,我们需要为 MSI 分配一些特殊角色( Azure 服务总线数据所有者Azure 服务总线数据发送方Azure 服务总线数据接收方)。 有关详细信息,请参阅此处

例如

  1. 向 MSI 分配角色

  2. 代码

public static void main( String[] args )
    {
        IMessageReceiver receiver = null;
        try {
             receiver= ClientFactory.createMessageReceiverFromEntityPathAsync("bowman1012",
                    "myqueue",
                     new ClientSettings(TokenProvider.createManagedIdentityTokenProvider()),
                     ReceiveMode.PEEKLOCK).get();
            IMessage message = receiver.receiveAsync().get();
            String content = new String(message.getBody(), UTF_8);
            System.out.println(content);

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }finally {
          Boolean f=  receiver.closeAsync().complete(null);
          System.out.println(f);
        }
    }

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM