【问题标题】:NumberFormatException in connecting Azure Service Bus using Managed Identity使用托管标识连接 Azure 服务总线时出现 NumberFormatException
【发布时间】:2021-01-24 06:36:37
【问题描述】:

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

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

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

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

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

提前致谢。

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

【问题讨论】:

    标签: java azureservicebus azure-servicebus-queues azure-managed-identity


    【解决方案1】:

    如果您想将 Azure 服务总线与 Azure 托管标识连接,我们需要分配一些特殊角色(Azure 服务总线数据所有者Azure 服务总线数据发送者Azure 服务总线数据接收器)到 MSI。更多详情请参考here

    例如

    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);
            }
        }
    

    【讨论】:

    • 我正在使用相同的代码,我也为我的服务总线分配了所需的角色,但仍然遇到相同的异常。
    • @Shreyanshi 你用的是windows app服务吗?
    • @Shreyanshi 你能创建一个新的网络应用程序来运行 webjob 吗?
    • 我尝试使用 Windows 和 Java 配置创建一个新应用程序,仍然是同样的问题。能否请您发送您的应用服务配置
    猜你喜欢
    • 2022-12-19
    • 2021-08-08
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2020-08-26
    • 2021-12-19
    • 2019-03-15
    • 2019-04-09
    相关资源
    最近更新 更多