Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Attending the Building Distributed Asynchronous Applications with SQL Service Broker session at PDC05 and thought I'd share these notes ....
- Service Broker is for SQL Server applications
- The queues are actually database objects
- You can write these applications as stored procedures with T-SQL (or .NET). New T-SQL keywords include:
- transaction
- receive
- conversation
- waitfor(?)
- queue
- xml (as part of SQL Server 2005)
- Reliable messaging included for queuing across databases
- Dialogs are for two-way messaging between services
- Guaranteed delivery, in-order delivery, secure communications
- Dialogs can be over a long period of time, or short
- A service is a named endpoint that a message can travel to
- Some basic code might start like:
create queue [Inventory Queue];
create service [Inventory]
on queue [Inventory Queue] ([DEFAULT)]; - Begin a dialog transaction "from" a service, "to" a service and pass on a defined transaction
- On target server, you select from the destination queue
- Can debug the T-SQL service from within Visual Studio.NET
- What if you don't want all the logic within stored procs? Answer: External Activation
- Messages placed in an Event Queue where an external activitor handles the logic
- Visit www.sqlservicebroker.com
- How do you keep this working without deadlocking? Answer: Conversation Group Locking
- Dialogs are single-threaded
- Locking of conversations to prevent collisions [note: look at further]
- Announcing ... Indigo (WCF) channel for the Service Broker!
- Using (datbase stored) certificates and public/private keys for Dialog Security between service endpoints
- Summary: Asynchronous DB "Stuff", Reliable Messaging, Reliable SOA