1. 可以将消息发送到多个目标服务(多播)
通过支持多个会话句柄,扩展了 SEND (Transact-SQL) 语句的语法以启用多播。
DECLARE @dialog_handle1 UNIQUEIDENTIFIER,
@dialog_handle2 UNIQUEIDENTIFIER,
@dialog_handle3 UNIQUEIDENTIFIER,
@OrderMsg XML ;
SET @OrderMsg = < construct message as appropriate for the application > ;
BEGIN DIALOG @dialog_handle1
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB1/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;
BEGIN DIALOG @dialog_handle2
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB2/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;
BEGIN DIALOG @dialog_handle3
FROM SERVICE [//InitiatorDB/InitiatorService]
TO SERVICE '//TargetDB3/TargetService’
ON CONTRACT [//AllDBs/OrderProcessing] ;
SEND ON CONVERSATION (@dialog_handle1, @dialog_handle2, @dialog_handle3)
MESSAGE TYPE [//AllDBs/OrderMsg]
(@OrderMsg) ;
2. 队列将公开此消息排队时间
队列具有一个新列 message_enqueue_time,用于显示消息已在队列中待了多少时间。
3. 可以禁用有害消息处理
现在,CREATE QUEUE 和 ALTER QUEUE语句可以通过添加子句 POISON_MESSAGE_HANDLING (STATUS = ON | OFF) 来启用或禁用有害消息处理。 目录视图 sys.service_queues 现在具有列 is_poison_message_handling_enabled,以指示是启用还是禁用有害消息。
POISON_MESSAGE_HANDLING — 指定是否对队列启用有害消息处理。 默认值为 ON。
将有害消息处理设置为 OFF 的队列在五个连续的事务回滚之后不会被禁用。 这样,应用程序就可以定义自定义的有害消息处理系统。
4. Service Broker 中的 AlwaysOn 支持