Qual é o contrato de mensagens do QuickFIX / J? Tenho garantia na entrega da encomenda?

Aug 18 2020

Estou apenas começando a usar o QuickFIX / J. Uma coisa que fico confuso ao ler seus documentos é que exatamente o que é o contrato de mensagens garantido pela implementação QuickFIX do protocolo FIX?

Em particular, eu sei que o FIX tem um mecanismo baseado em número de sequência embutido que as implementações podem aproveitar para lidar com mensagens fora de ordem, ausentes ou duplicadas. Mas o QuickFIX / J já tem esse recurso embutido? Como um aplicativo que usa QuickFIX / J para se comunicar com um mecanismo de correção, posso assumir:

  1. As mensagens entregues ao meu aplicativo pelo QuickFIX / J estão sempre em ordem.

  2. Não há mensagens perdidas (QuickFIX / J tratará automaticamente da nova solicitação)

  3. Não há mensagens duplicadas (QuickFIX / J pode olhar para o número de sequência recebido até agora e filtrar possível duplicação)

  4. Se o mecanismo de correção remota falhar, vou me reconectar com o último número de sequência conhecido automaticamente quando o mecanismo voltar

  5. Se meu aplicativo travar, quando ele for reiniciado, ele poderá retomar automaticamente a sessão a partir do número de sequência conhecido anterior? (por exemplo, haverá algum mecanismo de persistência de número de sequência pronto para uso?)

Respostas

1 ChristophJohn Aug 18 2020 at 18:15

QuickFIX / J implementa o protocolo de sessão FIX, então ele lida com todas as coisas no nível da sessão (conexão, números de seqüência, ...) para você.

  1. Sim, mas pode haver duplicatas, consulte 3.
  2. Sim.
  3. Não, na verdade, o QFJ ainda encaminhará possíveis duplicatas para seu aplicativo porque você ainda pode querer lidar com elas. Você precisa filtrá-los sozinho, se quiser, com base em 43/PossDupFlag.
  4. Sim.
  5. Sim. QFJ tem algum fora da caixa persistência de mecanismos como FileStore, JdbcStore, MemoryStore. Você também pode implementar o seu próprio, Storese necessário.

Aqui está um link sobre como criar um aplicativo QFJ, caso você ainda não o tenha encontrado: https://github.com/quickfix-j/quickfixj#creating-a-quickfixj-application