Qual è il contratto di messaggistica di QuickFIX / J? Sono garantito nella consegna dell'ordine?

Aug 18 2020

Sto appena iniziando con QuickFIX / J. Una cosa che mi confonde leggendo i loro documenti è che qual è esattamente il contratto di messaggistica assicurato dall'implementazione QuickFIX del protocollo FIX?

In particolare, so che FIX ha un meccanismo basato sul numero di sequenza incorporato che le implementazioni possono sfruttare per gestire messaggi fuori ordine, mancanti o duplicati. Ma QuickFIX / J ha già la funzionalità integrata? Come applicazione che utilizza QuickFIX / J per comunicare con un motore di correzione, posso presumere:

  1. I messaggi consegnati alla mia app da QuickFIX / J sono sempre in ordine.

  2. Non ci sono messaggi mancanti (QuickFIX / J gestirà automaticamente la ri-richiesta)

  3. Non ci sono messaggi duplicati (QuickFIX / J può guardare il numero di sequenza ricevuto finora e filtrare eventuali duplicazioni)

  4. Se il motore di riparazione remota si arresta in modo anomalo, mi riconnetterò automaticamente con l'ultimo numero di sequenza noto quando il motore tornerà

  5. Se la mia app si arresta in modo anomalo, al riavvio sarà in grado di riprendere automaticamente la sessione dal precedente numero di sequenza noto? (es. ci sarà un meccanismo di persistenza del numero di sequenza fuori dagli schemi?)

Risposte

1 ChristophJohn Aug 18 2020 at 18:15

QuickFIX / J implementa il protocollo di sessione FIX, quindi gestisce tutte le cose a livello di sessione (connessione, numeri di sequenza, ...) per te.

  1. Sì, ma potrebbero esserci dei duplicati, vedere 3.
  2. Sì.
  3. No, in realtà QFJ inoltrerà comunque eventuali duplicati alla tua app perché potresti comunque volerli gestire. È necessario filtrarli da soli se lo si desidera, in base a 43/PossDupFlag.
  4. Sì.
  5. Sì. QFJ ha alcuni fuori dalla scatola persistenza meccanismi come FileStore, JdbcStore, MemoryStore. Potresti anche implementarne uno tuo Storese necessario.

Ecco un collegamento su come creare un'applicazione QFJ, nel caso in cui non l'hai già trovata: https://github.com/quickfix-j/quickfixj#creating-a-quickfixj-application