我正在尝试使用示例代码将简单事件发送到 Azure EventHub ( https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-java-get-started-send )。看起来一切顺利,我已经配置完毕,但是当我到达:
ehClient.sendSync(sendEvent);
代码的一部分,它只是卡在那里,永远不会越过sendAsync方法。我使用的是个人计算机,并且没有运行防火墙。我是否必须在 Azure 中进行一些网络配置才能允许进行这种简单的发送?有人能成功完成这项工作吗?
final ConnectionStringBuilder connStr = new ConnectionStringBuilder()
.setNamespaceName("mynamespace")
.setEventHubName("myeventhubname")
.setSasKeyName("mysaskename")
.setSasKey("mysaskey");
final Gson gson = new GsonBuilder().create();
final ExecutorService executorService = Executors.newSingleThreadExecutor();
final EventHubClient ehClient = EventHubClient.createSync(connStr.toString(), executorService);
print("Event Hub Client Created");
try {
for (int i = 0; i < 100; i++) {
String payload = "Message " + Integer.toString(i);
byte[] payloadBytes = gson.toJson(payload).getBytes(Charset.defaultCharset());
EventData sendEvent = EventData.create(payloadBytes);
// HANGS HERE - NEVER GETS PAST THIS CALL
ehClient.sendSync(sendEvent);
}
} finally {
ehClient.closeSync();
executorService.shutdown();
}
最佳答案
尝试使用不同的执行器服务。例如“工作窃取线程”
final ExecutorService executorService = Executors.newWorkStealingPool();
关于azure - Java SDK 中的 EventHub 'send' 挂起,发送从未发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49932019/