Count active Thread for Service Broker Queue in SQL Server
Since we have big service broker setup, it is very important to know for us about thread running for target queue. Target queue is the queue which suppose to do the work of actual business logic and we used to give proper naming convention to each queue. Suppose we have one billing queue then we suppose to name it as “BillingInitiatorQueue”, “BillingTargetQueue” etc.
Since target queue has responsibility to implement actual business logic, I am always interested to see how many thread currently running for each target queue. Suppose I have set 15 thread for “BillingTargetQueue” but it may happen that I have only 5 to 10 messages in queue and hence all 15 thread will not be active. If I don’t have any message in queue then obviously no thread will be active though I set 15. Sometime I may have 1000 message to process in target queue but even I have 10 thread active only. Remaining 5 thread may not be getting proper system resources or anything else. I can’t even decide whether to increase thread or decrease without knowing actual number of message, time thread is taking to process. I have already written articles about “Find Service Broker Queue Count in SQL Server (Click Here) ” and “Keep watch on Service Broker Queue Delay in SQL Server (Click Here) ”. Today I am going to show the script which will give the count of thread for target queue running at the moment.
SELECT OBJECT_NAME(queue_id) AS QueueName, COUNT(*) AS ThreadCount FROM sys.dm_broker_activated_tasks WITH (NOLOCK) --Comment the WHERE clause to see thread count for all queue --not only target queue WHERE (OBJECT_NAME(queue_id) LIKE '%Target%') GROUP BY OBJECT_NAME(queue_id) HAVING (COUNT(*) > 0) ORDER BY ThreadCount DESC GO
I have written few more article about service broker, have a look if you are interested.
Service Broker Articles:
- Importance of Service Broker in SQL Server (Click Here)
- Introduction of Service Broker in SQL Server (Click Here)
- Enable Service Broker in SQL Server database (Click Here)
- Small demonstration of Service broker for beginners (Click Here)
- Find Service Broker Object like Contract, Message Type, Service Name, Queue Name in SQL Server (Click Here)
- Find Service Broker Queue Count in SQL Server (Click Here)
- Get Transmission queue row count in Service Broker (Click Here)
- Purge target Transmission queue of Service Broker in SQL Server (Click Here)
- Deal with size of Transmission Queue table sysxmitqueue in MSDB database (Click Here)
- Service Broker implementation between two tables in one database (Click Here)
- Service Broker Queue Activation and Thread in SQL Server (Click Here)
- Keep watch on Service Broker Queue Delay in SQL Server (Click Here)
- Deal with message queue conversation with state CD in Service Broker (Click Here)
Reference: Ritesh Shah
Note: Microsoft Books online is a default reference of all articles.