用于请求-响应的 WCF 或服务总线 session

标签 wcf servicebus azureservicebus

我正在使用 On-Premise Service Bus 1.1 进行进程间通信。

我需要在端点之间执行请求-响应方法,并且需要决定是使用 WCF 还是总线(WCF 的服务总线中继目前不适用于内部部署)。

  • WCF 最容易通过生成的客户端代理、IIS 主机(或自主机)的潜在复杂性以及调用服务的客户端版本控制进行通信。

  • 对于服务总线,为每个远程服务创建两个队列(即 userService, userServiceResponse) 然后使用 session 。使用不同的命令进行灵活的版本控制。这些队列的管理可能会变得复杂。

  • 对于我的项目,一切都在同一个子网中,如果需要,WCF 端点可以直接相互通信

为了帮助我决定使用哪种技术,我的问题是:

  1. 通过请求-响应服务总线可以在哪些地方使用 WCF?

  2. 是否有任何用于服务总线队列的库来实现 请求-响应消息传递(或任何可靠的代码示例)?

  3. 如果队列中有多个发布者,我们如何将回复返回给特定的发件人?我们会有多个 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/

相关文章:

jquery - jquery调用wcf服务时获取异常信息

c# - 使用证书签署文件

SignalR 服务总线主题名称冲突

c# - Azure 服务总线 - 只有一个订阅者接收消息

azure - 操作需要时间时重试消息

c# - BrokeredMessage 在等待后被处置

wcf - 带有 WCF 属性的 Entity Framework 5.0 DBContext 模板支持

wcf - 如何强制 net.tcp mex 端点 (mexTcpBinding) 参与端口共享?

azure - 成功建立的混合连接在 20 分钟后失去连接(需要重新启动 azure 混合连接服务)

c# - 通过 Internet 订阅 MSMQ