Я изучаю SQL Server Service Broker как инструмент для координации задач async. Предположим, у меня есть MasterService
, который объединяет данные от EmployeeInfoService
и PayrollInfoService
. Я получаю список EmployeeIDs
, а затем отправляю каждого в качестве разговора в обе службы. В конце этих двух сервисов активируется sproc, который будет обрабатывать два EmployeeIDs
за раз.Ожидание async taks в SQL Server Service Broker
Пара вопросов
- Как я могу хранить ответы для каждого сотрудника INTO временных таблиц внутри моей
MasterService
? - Как узнать, что две службы обработали все
EmployeeIDs
, чтобы я мог генерировать данные из двух темных таблиц, которые я построил на шаге 1?
Вот мой код до сих пор:
-- Get a whole bunch of EmployeeIDs
DECLARE @EmployeeConversation uniqueidentifier
DECLARE @PayrollConversation uniqueidentifier
BEGIN DIALOG @EmployeeConversation
FROM SERVICE MasterService
TO SERVICE 'EmployeeInfoService';
SEND ON CONVERSATION @EmployeeConversation MESSAGE (EmployeeID1)
SEND ON CONVERSATION @EmployeeConversation MESSAGE (EmployeeID2)
SEND ON CONVERSATION @EmployeeConversation MESSAGE (Employee...);
BEGIN DIALOG @PayrollConversation
FROM SERVICE MasterService
TO SERVICE 'PayrollInfoService'
WITH RELATED_CONVERSATION_GROUP = @EmployeeConversation;
SEND ON CONVERSATION @PayrollConversation MESSAGE (EmployeeID1)
SEND ON CONVERSATION @PayrollConversation MESSAGE (EmployeeID2)
SEND ON CONVERSATION @PayrollConversation MESSAGE (Employee...);
-- Now I need to wait till both conversations are done.
-- How do I handle that?