Thursday, April 29, 2004
Another tool that is a life-saver when it comes to working out how messages that are submitted into BizTalk are matched to 'listening' Orchestrations and Send Ports is the BizTalk Subscription Viewer utility BTSSubcriptionViewer.exe.
This tool can be found in the following folder:
\Program Files\Microsoft BizTalk Server 2004\SDK\Utilities
Once loaded, this tool is a Windows Application that has a split pane view. Initially the views are empty. Go to the Main->Load menu to load all of the subscriptions from the message box database.
Ok, this is more like it. A list of subscriptions are displayed in the top pane. If you select a subscription, then the subscription filter expression is display in the bottom pane. This effectively gives you an idea as to what properties BizTalk is looking to match in order to fire the subcriber.
There are some items in the list that are worth pointing out. Some subscriptions may be prefixed with Activate. These are Orchestration (XLANG) subscriptions where BizTalk will activate a new instance of an orchestration when the properties of a message match the subscription. There are also EPM type subscriptions. EPM stands for the Endpoint Manager and is responsible for the messaging subservice in BizTalk Server. Therefore, these subscriptions are for Send Ports that are waiting to be fired. There is also an internal subscription that has a service type of a GUID. Looking at the subscription filter expression for these (there will be one per host) suggests that this subscription manages the cache refresh of the host application (where each service of a host will periodically refresh its internal cache from the Management database). However, I'm only making an educated guess of the cache refresh subscription. Please comment here and correct me if I'm wrong :-)
So, why is the subscription viewer so important? Well, if you've ever had to implement a complex Content Based Routing project, or worked on Correlation projects, then you'll understand why. It is essential to be able to take a view of the current subscriptions in the message box especially when waiting on a message that is due to be correlated. If things go wrong (and they almost always do when initially developing the solution) then this tool can be an absolute life-saver!!