Pergunta

Eu estou tentando encontrar uma boa maneira de detectar uma perda de conexão.

O meu adaptador é implementado como um Fix :: Aplicação com base em um dos exemplos. Ele usa um iniciador de tomada para ligar para o gateway correção.

Quando eu desligar o internet que leva cerca de 30 segundos para o Fix :: método OnLogout do aplicativo para ser demitido. Parece que alguma classe subjacente estaria ciente de que existe um problema com a tomada muito antes. Existe uma maneira rápida levou gancho para isso?

Foi útil?

Solução

A melhor maneira de resolver este seria provavelmente a diminuir o seu Intervalo de pulsação para que você saiba mais cedo. Eu não sei de qualquer mensagem que o fogo para uma perda de conexão TCP, mas eu não acho que QuickFix está ouvindo eventos OS também. Embora, é provável que o fluxo através do evento fromAdmin se houvesse uma tal mensagem.

Você quis colocar a sua pergunta ao QuickFix DL?

Outras dicas

É possível que o motor de correção que você está usando não chamar de volta quando TCP está desligado, ou ele chama de volta em outra coisa que OnLogout. Desde que você está usando correção, eu acho que ele força um logout devido a pulsações perdidas.

forma rápida seria a de olhar para o código e verificar onde tomada próxima está a ser tratada, e que executa caminho quando isso acontece.

si TCP vem com um mecanismo de batimento cardíaco nativa chamada SO_KEEPALIVE . Problema é que o intervalo padrão para este batimento cardíaco pode ser tão alta quanto 2 horas. Este é configurado no nível de SO. Portanto, em teoria, você pode ligar SO_KEEPALIVE, configure um intervalo de pulsação razoável no nível do sistema operacional e ser feliz. No entanto, porque, como disse isso é muito OS dependente, a maioria dos aplicativos optar por implementar heartbeating no nível do aplicativo, e FIX não é excepção. Diminuindo o intervalo FIX batimento cardíaco é o caminho a percorrer aqui, especialmente se você está confiando em cancelar-on-desligar e segundos extras de perda de conexão sem serem detectados podem levar a execuções de ordem indesejados. Um gateway FIX implementado em cima de qualquer mecanismo de correção deve apoiar heartbeating configuração out-of-the-box. Dê uma olhada na CoralGateway para um exemplo. (Disclaimer: Eu sou um dos desenvolvedores de CoralGateway)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top