Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure服务总线消息泵_Azure_Azureservicebus - Fatal编程技术网

Azure服务总线消息泵

Azure服务总线消息泵,azure,azureservicebus,Azure,Azureservicebus,我想知道服务总线消息泵在引擎盖下是如何工作的。有没有什么好的文档可以给我指点 当我将消息发送到队列并等待回调调用时,我没有看到任何Http调用在幕后发生。回调是如何进行的,是否有任何打开的tcp会话?此通信使用什么协议 任何帮助都是有用的。服务总线消息泵只是现有Receive操作的一个很好的包装器。我的理解是,在引擎盖下,线程被旋转起来,使用标准的Receive方法从队列中请求消息。当消息泵接收到消息时,它将启动一个线程并调用OnMessage委托(最多可达类上的并发调用数属性) 关于消息泵到服

我想知道服务总线消息泵在引擎盖下是如何工作的。有没有什么好的文档可以给我指点

当我将消息发送到队列并等待回调调用时,我没有看到任何Http调用在幕后发生。回调是如何进行的,是否有任何打开的tcp会话?此通信使用什么协议


任何帮助都是有用的。

服务总线消息泵只是现有
Receive
操作的一个很好的包装器。我的理解是,在引擎盖下,线程被旋转起来,使用标准的
Receive
方法从队列中请求消息。当消息泵接收到消息时,它将启动一个线程并调用OnMessage委托(最多可达类上的并发调用数属性)

关于消息泵到服务总线的实际通信,这取决于。默认情况下,代理消息的连接模式为AutoDetect,但正如您在上面链接末尾看到的注释所示,代理消息不支持从TCP返回到HTTP,因此对于代理消息,它从TCP开始并保持,除非您显式将其设置为HTTP

在HTTP连接模式下,如果您有,您可以看到来自
Receive
调用的请求,并且只要发生轮询,您就可以看到它续订请求。在TCP模式下(或者默认情况下,因为自动检测不会返回HTTP),它会打开一个TCP连接(在端口9354上),并将其用于双向通信。如果使用Process Explorer或NetStat之类的工具,您可以看到这一点

关于服务总线使用的专有协议,实际上没有那么多好的文档。它们直接支持AMQP,这是一种通过不同端口的开放消息传递协议。但是您可以通过connectionstring或在创建
MessagingFactory
时,通过在
MessagingFactoryOptions
对象上设置
TransportType
来确定传输