I know I am late, but just trying to add my points; this may help someone else on the same subject.
I used MassTransit, which is a free-to-use library, and I have been using it for 5 years in production.
It supports Azure Service Bus cohesively and provides a duplex messaging with support of both DeadLetter and Error queue.
TIP: Write the consumer/subscriber on the Interfaces of the model if you are using MassTransists.
https://masstransit.io/documentation/transports/azure-service-bus
Thanks
Rushi