|
Простейший Service Broker
#39892462
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
|
felix_ff,
нет, таблицы нет в БД
Вот что я делаю полностью:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
CREATE QUEUE dbo.ExpenseQueue1 with STATUS = ON, RETENTION = OFF, POISON_MESSAGE_HANDLING (STATUS = ON) ;
GO
CREATE QUEUE dbo.ExpenseQueue2 WITH STATUS = ON, RETENTION = OFF, ACTIVATION(PROCEDURE_NAME = expense_procedure, MAX_QUEUE_READERS = 10, EXECUTE AS SELF), POISON_MESSAGE_HANDLING (STATUS = ON)
GO
CREATE SERVICE ExpensesService1
ON QUEUE dbo.ExpenseQueue1
GO
CREATE SERVICE ExpensesService2
ON QUEUE dbo.ExpenseQueue2
GO
ALTER SERVICE [ExpensesService1] ON QUEUE [dbo].[ExpenseQueue1] (ADD CONTRACT [DEFAULT])
GO
ALTER SERVICE [ExpensesService2] ON QUEUE [dbo].[ExpenseQueue2] (ADD CONTRACT [DEFAULT])
GO
DECLARE @dialog_handle UNIQUEIDENTIFIER;
BEGIN DIALOG @dialog_handle
FROM SERVICE ExpensesService1
TO SERVICE 'ExpensesService2'
WITH ENCRYPTION = OFF ;
SELECT * FROM sys.service_queues -- вижу [dbo].[expense_procedure] в поле activation_procedure
DECLARE @I int;
SET @I=1
WHILE @I<5
BEGIN
begin tran;
SEND ON CONVERSATION (@dialog_handle) (CAST('TEST2' AS VARBINARY(MAX)));
commit;
SET @I=@I+1;
END
SELECT * FROM sys.conversation_endpoints;
WAITFOR(RECEIVE status, service_name, message_body, try_convert(xml, [message_body]) FROM ExpenseQueue2), TIMEOUT 100;
-- тут вижу 4 сообщения
WAITFOR(RECEIVE status, service_name, message_body, try_convert(xml, [message_body]) FROM ExpenseQueue2), TIMEOUT 100;
-- тут уже нет сообщений
END CONVERSATION @dialog_handle
DROP SERVICE ExpensesService1;
DROP SERVICE ExpensesService2;
DROP QUEUE ExpenseQueue1;
DROP QUEUE ExpenseQueue2;
|
|
|