Azure Service Fabric连接是否能够在Azure Service Fabric节点改组中生存?

时间:2018-05-04 17:01:08

标签: messaging azure-service-fabric azureservicebus

我使用Azure Service Bus(ASB)消息传递作为Message-oriented middleware(MOM)。具体而言,主题和订阅作为Pub-Sub解决方案。

我在Azure Service Fabric(ASF)群集中使用ASB。 ASF集群管理可以改变节点,这将破坏与ASB的连接。

我想知道优雅地终止连接的正确方法是什么?

我正在考虑在集群中有一个Pub-Sub解决方案。这将解决它和其他问题。

请检查此链接以了解我为什么要保持连接活动: “Establishing a connection is an expensive operation that you can avoid by re-using the same factory and client objects for multiple operations.

2 个答案:

答案 0 :(得分:2)

当服务实例/副本从一个节点移动到另一个节点时,Connections将无法生存。您将需要实现Service Fabric通信侦听器,每次启动和停止服务实例/副本时都将调用该侦听器。

答案 1 :(得分:0)

  

ASF群集管理可能会破坏可能会终止与ASB连接的节点。

当服务结构移动群集周围的服务时,它将终止进程并在其他节点中启动另一个服务实例,MessagingFactory和连接在每个进程中被隔离,即使您使用共享的a在新实例出现时,您必须重新创建这些连接。

  

现在,我可以在有状态服务的可靠集合中保存连接

我不知道你的意思是什么,连接不像你存储在某处的一堆数据,它就像连接到主电源的电源线,它是否连接。

  

Establishing a connection is an expensive operation that you can avoid by re-using the same factory and client objects for multiple operations.

我认为你误解了这个主题的想法。

当服务启动不昂贵时打开连接,昂贵的是在每次迭代通过队列时打开和关闭连接。 如果您的服务经常在群集中移动,我认为连接时间将是您遇到的最少问题。

此规则适用于您不在迭代之间保持状态的情况,例如,对Web应用程序的请求将处理某些数据并将消息放入队列中,如果您必须打开连接每个请求,这都会减慢进程,在这种情况下适用此规则,因此您将保持QueueSender实例的连接打开,因此每个连续请求都会重用以前的连接。