SQL Server 2012 中的 Service Broker功能的一些改进或增强
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,用于显示消息已在队列中待了多少时间。
现在,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 支持
欢迎大家扫描下面二维码成为我的客户,扶你上云