EventProcessorHost を使用して、JAVA で eventhub からのメッセージを消費しようとしています。here1とhere2の手順に従いましたが、コードを実行するとエラーが発生します..
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
詳細:
ブログで述べたように新しいストレージ アカウントを作成し、BLOB も作成しました。
EventProcessor クラスと ErrorNotificationHandler クラスは、Microsoft ドキュメントに記載されているとおりです。
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 でストレージの特定のタイムアウトを証明する方法がわかりません。どんな助けでも感謝します。