队列

适用于:SQL ServerAzure SQL 托管实例

队列存储消息。 Service Broker 收到某个服务的消息后,Service Broker 将该消息插入该服务的队列中。 为了获取发送给该服务的消息,应用程序将接收来自队列的消息。 Service Broker 管理队列,并呈现一个类似于表的队列视图。

每个服务都可与一个队列相关联。 当某个服务的消息到达后,Service Broker 将该消息放到与该服务关联的队列中。

每条消息就是队列中的一行。 行中可以包含消息的内容,以及消息类型、消息所针对的服务、消息所遵循的约定、对消息执行的验证、消息所属的会话、队列的内部信息等多种信息。 应用程序使用消息行中的信息来唯一标识每条消息,并对该消息进行相应处理。

应用程序从该服务的队列接收消息。 对于每个会话,队列以发送方发送消息的顺序返回消息。 由单个接收操作返回的所有消息都是属于一个会话组的会话的一部分。 事实上,一个队列中包含若干组相关的消息,每个会话组对应其中一组消息。 每次应用程序执行从队列接收消息的操作时,该队列都要返回一组相关的消息。 应用程序可以选择是接收特定会话的消息还是特定会话组的消息。 队列不按严格的先进先出顺序返回消息,而是以消息的发送顺序返回每个会话的消息。 因此,应用程序无需包含恢复消息原始顺序的代码。

队列可以与存储过程相关联。 在这种情况下,当队列中有要处理的消息时,SQL Server 激活存储过程。 SQL Server 可以启动存储过程的多个实例,实例的数量最多可为所配置的最大值。 有关详细信息,请参阅 Service Broker 激活

另请参阅