我正在使用 On-Premise Service Bus 1.1 进行进程间通信。
我需要在端点之间执行请求-响应方法,并且需要决定是使用 WCF 还是总线(WCF 的服务总线中继目前不适用于内部部署)。
WCF 最容易通过生成的客户端代理、IIS 主机(或自主机)的潜在复杂性以及调用服务的客户端版本控制进行通信。
对于服务总线,为每个远程服务创建两个队列(即 userService, userServiceResponse) 然后使用 session 。使用不同的命令进行灵活的版本控制。这些队列的管理可能会变得复杂。
对于我的项目,一切都在同一个子网中,如果需要,WCF 端点可以直接相互通信
为了帮助我决定使用哪种技术,我的问题是:
通过请求-响应服务总线可以在哪些地方使用 WCF?
是否有任何用于服务总线队列的库来实现 请求-响应消息传递(或任何可靠的代码示例)?
如果队列中有多个发布者,我们如何将回复返回给特定的发件人?我们会有多个 serviceReponse 队列,还是可以使用一个返回队列?
最佳答案
Service Bus 消息可以有一个 SessionID
是该请求唯一的 SessionID
,服务将在其中接收消息,对其进行处理并使用 ReplyToSessionID< 中具有相同 ID 的消息进行回复
。这样请求方就可以像这样根据Session ID接收
MessageSession sessionReceiver = _queueClient.AcceptMessageSession(_mySessionID,TimeSpan.FromSeconds(5));
sessionReceiver.Peek();
我认为这里最大的问题是同步与异步,您是希望请求方坐下来等待响应 (WCF) 还是稍后返回并检查响应是否已准备好服务总线,但这是一个业务决策。
这link或者这个 MSDN article可能会帮助您开始使用 Req/Rep for SB。
关于用于请求-响应的 WCF 或服务总线 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894318/