我是Service Broker的新手
消息类型
CREATE MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c03/RequestMessage]
VALIDATION = WELL_FORMED_XML
GO
CREATE MESSAGE TYPE [http://ssb.csharp.at/SSB_Book/c03/ResponseMessage]
VALIDATION = WELL_FORMED_XML
GO
合同
CREATE CONTRACT [http://ssb.csharp.at/SSB_Book/c03/HelloWorldContract]
(
[http://ssb.csharp.at/SSB_Book/c03/RequestMessage] SENT BY INITIATOR,
[http://ssb.csharp.at/SSB_Book/c03/ResponseMessage] SENT BY TARGET
)
GO
队列
CREATE QUEUE InitiatorQueue
WITH ACTIVATION
(
STATUS = ON,
PROCEDURE_NAME = [ProcessResponseMessage],
MAX_QUEUE_READERS = 1,
EXECUTE AS SELF
)
CREATE QUEUE TargetQueue
WITH ACTIVATION
(
STATUS = ON,
PROCEDURE_NAME = [ProcessRequestMessage],
MAX_QUEUE_READERS = 1,
EXECUTE AS SELF
)
服务
CREATE SERVICE InitiatorService
ON QUEUE InitiatorQueue
(
[http://ssb.csharp.at/SSB_Book/c03/HelloWorldContract]
)
GO
CREATE SERVICE TargetService
ON QUEUE TargetQueue
(
[http://ssb.csharp.at/SSB_Book/c03/HelloWorldContract]
)
GO
以上代码就是一个例子。
问题是我想将消息响应到另一个队列(例如,ErrorQueue)而不是InitiatorQueue。我在Google上做过研究,但是找不到任何与我的问题相关的资源。
我有点想法,但不知道它是否有效:
[http://ssb.csharp.at/SSB_Book/c03/ErrorMessage] SENT BY INITIATOR
由于
答案 0 :(得分:1)
处理队列消息的事情可以选择做什么。如果要发送到其他队列,则需要发送不同的会话,因为发送与原始消息所在的会话相同的会话会将其发送回发送消息的位置。您需要另一种消息类型,合同,队列和服务来发送该错误消息。让我知道如果这还不足以让你继续前进,我可以进一步阐述。