在使用2个分区创建的Azure事件中心中,事件中心使用者会尝试连接到第3个分区和第4个分区

时间:2019-06-14 04:25:58

标签: java azure azure-eventhub

我已经设置了带有2个分区的Azure事件集线器。我正在使用Microsoft发布的代码(https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-java-get-started-send)来使用来自事件中心的消息。使用者尝试连接到第三个分区和第四个分区,即使它们不存在。

错误消息:

  

2019-06-14 09:34:34,998 [ault | host] -1-13]-错误PartitionPump
  -主机主机:3:PartitionReceiver创建失败java.util.concurrent.CompletionException:   com.microsoft.azure.eventhubs.EventHubException:指定   分区对于EventHub分区的发送者或接收者无效。它   应该在0到1之间。参数名称:PartitionId   TrackingId:11c0c687fa3146ffaa97749d23abeae5_G27,   SystemTracker:gateway5,时间戳:2019-06-14T04:04:34,   errorContext [NS:dev-sams-iot.servicebus.windows.net,PATH:   test / ConsumerGroups / $ Default / Partitions / 3,REFERENCE_ID:   6d2875_ae5_G27_1560485074529]在   java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)     在   java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)     在   java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:647)     在   java.util.concurrent.CompletableFuture $ UniAccept.tryFire $$$ capture(CompletableFuture.java:632)     在   java.util.concurrent.CompletableFuture $ UniAccept.tryFire(CompletableFuture.java)     在   java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)     在   java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)     在   com.microsoft.azure.eventhubs.impl.ExceptionUtil.completeExceptionally(ExceptionUtil.java:104)     在   com.microsoft.azure.eventhubs.impl.MessageReceiver.cancelOpen(MessageReceiver.java:361)     在   com.microsoft.azure.eventhubs.impl.MessageReceiver.onOpenComplete(MessageReceiver.java:351)     在   com.microsoft.azure.eventhubs.impl.MessageReceiver.onError(MessageReceiver.java:418)     在   com.microsoft.azure.eventhubs.impl.MessageReceiver.onClose(MessageReceiver.java:740)     在   com.microsoft.azure.eventhubs.impl.BaseLinkHandler.processOnClose(BaseLinkHandler.java:74)     在   com.microsoft.azure.eventhubs.impl.BaseLinkHandler.handleRemoteLinkClosed(BaseLinkHandler.java:113)     在   com.microsoft.azure.eventhubs.impl.BaseLinkHandler.onLinkRemoteClose(BaseLinkHandler.java:48)     在   org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:176)     在   org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108)     在   org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:324)     在   org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:291)     在   com.microsoft.azure.eventhubs.impl.MessagingFactory $ RunReactor.run(MessagingFactory.java:507)     在   java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)     在java.util.concurrent.FutureTask.run $$$ capture(FutureTask.java:266)     在java.util.concurrent.FutureTask.run(FutureTask.java)在   java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)     在   java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)     在java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:0)

在创建事件中心时,还需要一个存储帐户。 Event-hub将分区计数和分区消息之类的详细信息存储在存储帐户中。

上面的原因是因为最初我创建了一个具有四个分区的事件集线器,并将其详细信息保存在了存储帐户中。我删除了该事件中心,然后创建了具有两个分区的另一个事件中心。两个事件中心都使用相同的存储帐户。 删除存储帐户的内容可以解决此问题。