Difference between BrokeredMessage class in Microsoft.ServiceBus and Message class in Microsoft.Azure.ServiceBus

EagleDev picture EagleDev · Mar 1, 2018 · Viewed 9.8k times · Source

I've got started with Azure Service Bus in Azure. Having gone through some references over the Internet, it seems that people use BrokeredMessage class in Microsoft.ServiceBus.Messaging rather than Message class in Microsoft.Azure.ServiceBus.

I can send both of message 'types' to Azure Service Bus and also work with them over Azure Service Bus. Also, both can be used in Asynchronous operation. What are the main differences between the two types?

[Update] This article gives best practices of Azure Service Bus when exchaning brokered message (https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements). I'm unsure if it is also referred to Message in Microsoft.Azure.ServiceBus.

Answer

Sean Feldman picture Sean Feldman · Mar 1, 2018

If it's a new project to use Azure Service Bus, I would recommend the following:

  • Prefer the new .NET Standard client (Microsoft.Azure.ServiceBus) with Message.
  • Be careful with documentation and various resources. They mostly cater to the old client (hopefully MSFT doco soon to change).
  • If you need transport transactions spanning different entities, the new client can't provide it yet.
  • If you need management operations, the new client won't provide it. Ever. Instead you'd have to use Management library or wait till a replacement package for NamespaceManager is out.
  • If you have old systems emitting messages sent as serialized data and not Stream, implementations using new Client have to know about it and use extension method provided by the client to process those messages. New client only deals with Stream based messages.