rebus-org / Rebus.AzureServiceBus

:bus: Azure Service Bus transport for Rebus
https://mookid.dk/category/rebus
Other
33 stars 20 forks source link

v7 Naming Breaking change format #26

Closed Meyce closed 5 years ago

Meyce commented 5 years ago

This is a suggestion and is related to issue #25. Since breaking changes are being introduced to the names of topics and queues, the topic names can be changed such that they use / to create virtual directories. In #25 I added some code that alters the standard topic names from {fully qualified type name}__{assembly name} to {assembly name}/{fully qualified type name}. The difference when looking at this within software for managing queues and topics are shown in the screenshot below.

image

If there are other reasons such a change wouldn't work then this issue can be disregarded, and I can accomplish it with a IStorageSubscription decorator. However, this format is very convenient when dealing with a large number of topics on a namespace from multiple assemblies, and it would be nice if it wasn't necessary to introduce a new decorator throughout to accomplish it.

mookid8000 commented 5 years ago

Really good idea! I'll look into it...

mookid8000 commented 5 years ago

Rebus.AzureServiceBus 7.0.0-a07 is on NuGet.org now. It defaults to arranging topics beneath their assemblies, just as you proposed.

This means that e.g. await bus.Subscribe<string>(); will result in the creation of a topic named mscorlib/System.String, which will show up as a System.String node nested beneath an mscorlib node in tools that support it.

Funnily, in the Azure Portal, the topic will display as mscorlib~System.String, because.... well, because Microsoft is weird I guess.

Thanks for proposing this change – I'm looking forward to hearing how it works out for you.

PS: "Legacy naming" is still available for those that need it – just go .Transport(t => t.UseAzureServiceBus(...).UseLegacyNaming()) (or .Transport(t => t.UseAzureServiceBusAsOneWayClient(...).UseLegacyNaming()) for one-way clients) to revert to using the same naming strategy as Rebus.AzureServiceBus versions 6 and older.