Creating Service Broker Contracts
08/29/2025 Contracts define the name of a specific business task and list the message types used in that task.
Contracts define the name of a specific business task and list the message types used in that
task. Service Broker contracts define two different service roles: the initiator and the target. The
initiator of a conversation begins the conversation by sending a message to the target. The
contract that the conversation uses defines which service role can send messages of a given
message type.
For each task that the service performs, create a contract that includes the message types for
each step in the task. For each message type, specify whether the message type is sent from
the initiator to the target, from the target to the initiator, or in both directions.
A contract doesn’t specify message ordering or the number of messages of a particular type
that can be sent. Service Broker requires that the initiator send the first message in a dialog
conversation. After the first message, there are no ordering requirements.
More than one contract can use the same message types. For example, a message that consists
of an XML document that contains a part number and quantity might be useful in a task that
accepts an order from a customer, a task that manages inventory, and a task that requests
shipping. Each task corresponds to a distinct contract, but all three contracts can use the same
message type.
The network format for a message includes the name of the contract. Therefore, contract
names are often chosen to avoid collation issues and naming conflicts. For more information
on naming, see
Naming Service Broker Objects.
CREATE CONTRACT (Transact-SQL)
Conversation architecture
Contracts