2011-08-17 11 views
8

Sono nuovo a QuickFIX e ho qualche domanda di base per quanto riguarda QuickFix:QuickFIX libreria C++ - domanda di carattere generale per quanto riguarda ThreadedSocketInitiator

1) Considerando che in una sola volta, non ci sarà una sola sessione di correzione tra un accettore ed un iniziatore. Non capisco perfettamente lo scopo delle classi ThreadedSocketInitiator e ThreadedSocketAcceptor.

Oppure esistono queste classi per facilitare più sessioni, in cui più "iniziatori" possono parlare con diversi accettori e viceversa?

2) QuickFIX ha alcuni tipi di persistenza dei messaggi, ad esempio, cosa succede se il messaggio viene perso durante il transito? Il motore si occupa di inviare nuovamente il messaggio?

risposta

5

1) Quickfix utilizza 1 thread per sessione. Il motore che puoi assumere è l'intero processo.

ThreadedSocketInitiator viene utilizzato quando si desidera utilizzare il motore come un client. Ci si connette a un altro server e si trasmettono messaggi. Inizi le connessioni, da qui il nome iniziatore. Si genera un nuovo thread per ogni sessione configurata con un server.

ThreadedSocketAcceptor viene utilizzato quando si desidera utilizzare il motore come server. Accetti le connessioni quindi accettante. Quando si imposta una nuova sessione con un client, viene generato un nuovo thread solo per quella specifica sessione.

Ricordare che tutte le sessioni hanno un ID univoco per distinguere tra più sessioni. Un server può avere più sessioni con lo stesso client e viceversa.

2) Sì. Ma il ricevitore deve avviare un messaggio ResendRequest per fare di nuovo inviare il mittente. Lo farà automaticamente controllando il flag di latenza nel file di configurazione, se non ha ricevuto una risposta a un messaggio già inviato.

+0

Grazie. Se avvio due sessioni dal mio lato con due oggetti SocketInitiator, anche in questo caso Quickfix avvierà due sessioni (e forse due thread internamente). Quindi, qual è ThreadedSocketInitiator diverso da SocketInitiator? – Lazylabs

+0

@Lazylabs - SocketInitiator è un modello a thread singolo, ThreadedSocketInitiator è un modello con multithreading. – DumbCoder

+0

Esiste in realtà un thread separato per i messaggi toApp e fromApp. Tuttavia, esiste un uso estensivo del blocco mutex, quindi l'applicazione utente può utilizzare ogni sessione come un thread logico. – jaybny

Problemi correlati