0

EventProcessorHost を使用して、JAVA で eventhub からのメッセージを消費しようとしています。here1here2の手順に従いましたが、コードを実行するとエラーが発生します..

Registering host named <name>

Failure while registering: java.util.concurrent.ExecutionException: com.microsoft.azure.storage.StorageException: The client could not finish the operation within specified maximum execution timeout.
    Press enter to stop

詳細:

  1. ブログで述べたように新しいストレージ アカウントを作成し、BLOB も作成しました。

  2. EventProcessor クラスと ErrorNotificationHandler クラスは、Microsoft ドキュメントに記載されているとおりです。

  3. register を呼び出すコードは次のとおりです...

    final String consumerGroupName = "test";
    final String namespaceName = "--namespace--";
    final String eventHubName = "--eventhub name --";
    final String sasKeyName = "--saskey name--";
    final String sasKey = "--sas-key";
    final String containerName = "--container name --";
    final String storageAccountName = "--storage account name --";
    final String storageAccountKey = "--storage -- account key--";
    final String connectionString = "--eventhub connection string copied from azure portal --";
    final String storageConString = "--storage connection string copied from azure portal --";
    
        EventProcessorHost host = new EventProcessorHost(
        namespaceName, // Also tried with full name <namespace name>.servicebus.windows.net
        eventHubName,
        consumerGroupName,
        connectionString,
        storageConString,
        containerName
        //        "<blobprefix>" Also tried with blob prefix
        );
    
        System.out.println("Registering host named " + host.getHostName());
        EventProcessorOptions options = new EventProcessorOptions();
        options.setReceiveTimeOut(Duration.ofMinutes(12 L));
        options.setExceptionNotification(new ErrorNotificationHandler());
    
        try {
    
        host.registerEventProcessor(EventProcessor.class, options).get(15, TimeUnit.MINUTES);
    
        } catch (Exception e) {
        System.out.print("Failure while registering: ");
        if (e instanceof ExecutionException) {
        Throwable inner = e.getCause();
        System.out.println(inner.toString());
        } else {
        System.out.println(e.toString());
        }
        }

注: ブログでは、EventProcessorHost のコンストラクターが非推奨になりました。

オンラインでエラーを検索したところ、ストレージのタイムアウトを増やすことができましたが、EventProcessorHost でストレージの特定のタイムアウトを証明する方法がわかりません。どんな助けでも感謝します。

4

1 に答える 1