Simplifying working with Azure Notification Hubs
Posted on 5 September, 2014
Close to 97% of Service Bus namespaces today have either a Notification Hub or one of the messaging entities (Queue, Topic, Relay or Event Hub) in it and very rarely both together. In order to simplify the experience which today combines both Notification Hub and messaging entities together and to better manage these entities in the Service Bus backend, we are working towards splitting the user experience. As a first step towards this, we are making the selection of the purpose of a namespace explicit in whether you want to use it to create a Notification Hub or one of the messaging entities within it. In near future, with this change as the basis, we will also make it easy to consume Notification Hub from the SDKs without any of the overhead of the Service Bus specific components thereby addressing one of major pain point we have heard from customers. Note: This change will roll out next week. Please reach out to us if you have any concerns or you have any scenario which will not work with these changes. When you go to create a new namespace, you will see a new selection to determine the Namespace Type. If you want to create a Notification Hub in the namespace, choose Notification Hub otherwise keep it as default (Messaging) and create the namespace. If you want to create both Notification Hub and the messaging entities within a single namespace, then you will have to create separate namespaces going forward. Note that the existing namespaces where you may have both Notification Hub and the messaging entities in a single namespace will continue to work as is however we strongly encourage you to separate them out in their own namespaces. Once the namespace has been created, you will see a new column called "Type" in the Namespaces listing. The "Type" column can have either of the following three values: 1. Messaging - if you created a new namespace by specifying the type as 'Messaging' (default). 2. Notification Hub - if you created a new namespace by explicitly specifying the type as 'Notification Hub'. 3. Mixed - for the existing namespaces which have both Notification Hub and Messaging entities today. These namespaces and the entities within them will continue to work as is though we will not allow creating new namespaces with ‘Mixed’ type. Note that all the existing namespaces will show up as 'Mixed' type for the time being so the experience remains unchanged. We do however intend to run a backfill job in 1 month time which will update the 'Namespace Type' correctly so that if a namespace contains only Notification Hubs then its type will be update to 'Notification Hub' and if it only contains messaging entities then it will be updated to 'Messaging'. This will not have any impact on how you use the entities today and everything will continue to work as is. The 'Quick Create' & the 'Custom Create' experience for the Service Bus entities remains unchanged except that you will see an automatic filtering in the namespace dropdown depending on the entities you are creating e.g. if you are creating a Notification Hub then the namespaces you will see will be of ‘Notification Hub’ type (as well as ‘Mixed' type for the time being). Clicking on a namespace will also show a customized top level menu depending on the Type. You will be cable to create and configure Notification Hubs in a namespace of type 'Notification Hub' and any of the messaging entities in the namespace of type 'Messaging' in the same manner as before. If you currently have a ‘Mixed' namespace which contains both Notification Hubs and Messaging entities then we encourage you to split them out in their own separate namespaces. If you use PowerShell cmdlet or REST APIs directly to create a namespace then the namespace will be created using a ‘Mixed’ mode right now and we are not introducing any breaking changes here however we do plan to update the cmdlets in a subsequent release to add NamespaceType as optional parameter with 'Messaging' as the default so if you use the cmdlets to create a namespace that you will need to explicitly provide NamespaceType as 'Notification Hub'. Thank you!