Azure IoT Hub IoT Edge pipeline

Fixing “Encountered error while fetching the list of EventHub PartitionIds.” with an IoTHub trigger in Azure Functions

This post was most recently updated on March 16th, 2023.

2 min read.

This article explains how to (possibly) fix an error along the lines of “Encountered error while fetching the list of EventHub PartitionIds” which is thrown by your Azure Function (or other code) trying to trigger based on IoT Hub or Event Hub messages.

Problem

When trying to debug or run your Azure Function (or, theoretically, some other code attaching itself to an EventHub or IoTHub to listen to messages), you get an error somewhat like this:

Microsoft.Azure.EventHubs.Processor: Encountered error while fetching the list of EventHub PartitionIds. Microsoft.Azure.Amqp: An existing connection was forcibly closed by the remote host.

What do?

What does “Encountered error while fetching the list of EventHub PartitionIds” mean anyway?

There are multiple reasons why you might get this error. You might be using an incompatible SDK version, references to conflicting dependencies, an issue in your Azure Functions Trigger definition, or something else I haven’t found yet.

Let’s take a look at how to fix these.

Solution

A couple of things you can do. One of these has fixed the issue for me every time this has happened. Well, both times this has happened. But still.

Time needed: 10 minutes

How to fix error “Microsoft.Azure.EventHubs.Processor: Encountered error while fetching the list of EventHub PartitionIds. Microsoft.Azure.Amqp: An existing connection was forcibly closed by the remote host.”?

  1. Upgrade from Microsoft.Azure.EventHubs to Azure.Messaging.EventHubs

    Microsoft.Azure.EventHubs is old and deprecated – you should move on to the newer Azure.Messaging namespace.

    I’ve upgraded a couple of projects, and it has not been too complicated so far.


    The migration guide can be found here.

  2. Remove all references to Microsoft.Azure.Eventhubs

    If you have upgraded to Azure.Messaging NuGet packages already, please remove the old packages in case you haven’t already.

  3. Upgrade to the latest Microsoft.Azure.EventHubs version

    If you can’t migrate away from Microsoft.Azure.EventHubs NuGet package, you’d do well to upgrade any dependencies you have in Microsoft.Azure.EventHubs space. As of writing this (end of 2022) these NuGet packages are still supposed to get security updates.

  4. Make sure your trigger is configured properly

    Maybe there’s something wrong with your trigger – worth checking out. Your code might look something like this:
    [FunctionName("triggerondevicemessage")]
    public static void Run([IoTHubTrigger("messages/events", Connection = "EventHub")]EventData message, ILogger log)


    Make sure your endpoint actually is called messages/events – by default it is, but who knows what weirdness you’ve applied to yours. Worth double-checking!

    Also, the Connection -parameter references an app setting you have for an EventHub/IoTHub connection string – make sure it actually exists and is the one you want.

My 2 cents is that you should migrate if possible. The packages in the old Microsoft.Azure.EventHubs namespace isn’t maintained, and the migration should in the majority of cases be reasonably easy.

That said, as of writing this (at the end of 2022), the “old” packages are still very much in use. They’ve been downloaded a couple hundred thousand times in the last 6 weeks alone. And who knows how much active code is out there?

Many of the Microsoft.Azure.EventHubs NuGet packages are still downloaded thousands of times per day.
Many Microsoft.Azure.EventHubs NuGet packages are still downloaded thousands of times per day.

If you haven’t upgraded yet, you’re not alone. But it’s time to plan or at least evaluate it. 😁

References

mm
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments