私は、Acceptor FIXエンジンに注文を送信するためにQuickFix/J(FIX 4.2)に取り組んでいます。基本的に私は2つのアカウントのヘルプが必要です。私が最初にアクセプタとの接続を確立しようとするとQuickFixシーケンスリセットが動作しない
を、アクセプターは、「メッセージのSeqんが低すぎる」と言っていない初期ログオン要求を拒否します。この後、私のイニシエータは、発信シーケンス番号を1だけインクリメントします。といいます。アクセサーエンジンのマッチで予期されるように、私は安定した接続を得る。このプロセスをスピードアップするために、私は予想されるseqを抽出し始めました。いいえ。アクセプタエンジンによって送信された拒否メッセージから、発信シーケンス番号を変更しました。私のエンジンのために使用
session.setNextTargetMsgSeqNum(expectedSeqNo).
しかし、後で、私のエンジンが着信シーケンス番号を見つけた場合。予想よりも高い場合、Resend要求を送信します。それに応答して、相手はSequence Reset msg(35 = 4,123 = Y)を返送する。今、このmsgを受信した後、着信seq番号。私のエンジンはSeq Reset msgから受け取ったものに自動的に設定されるべきです。しかし、これは起こりませんし、私のエンジンは、着信seq番号に変更を加えずにメッセージを再送するよう求めています。興味深いことに、最初の場所で(setNextTargetMsgSeqNumを使って)発信seq noを明示的に変更しないと、この問題が発生することがわかりました。
Sequence Reset Msgを取得したときにエンジンが正常に動作しないのはなぜですか?
私は相手と話しましたが、彼らは自分の設定でResetOnLogon = Yを持っていません。だから私のエンジンが来るたびに、それはしばしばseq noでLogonリクエストを送る。予想よりも低い(1から始まる)。接続をすばやく設定するより良い方法はありますか?私のエンジンは何とかシーケンス番号を使用するようにすることができますように。それが降りる直前のポイントから再開しますか?理想的なアプローチは何でしょうか?
このように、メッセージをシーケンス番号を処理しているファイルに保存しています。しかし、もう一度問題が起きるのは、私のQuickfixイニシエータエンジンがSequence Resetメッセージに応答していないことです。管理者のコールバックはまったくありません。
私は、あるサーバーからアクセサーに接続してからそのセッションを閉じ、同じセッションIDを使用してアクセサーに接続するために別のサーバーを使用しているときに、ほとんど常にシーケンスリセットメッセージへの応答が起こっていないことに気付きました。ログオンが受け入れられると、正常に動作することが期待されます。しかし、他のエンジンがシーケンス番号を特定の番号(基本的にはギャップ充填)に送信している間、私の修正エンジンはそれに応答せず、予期されるシーケンス番号をリセットせず、アクセプタに再送要求を送信し続けます。どんな助けでも大歓迎です!
フランクに感謝します。あなたの返信は大いに役立った。確かにコールバックの例外がありました!永続的なMessageStoreの方向性も役立ちます。 – Leo
偉大な、私はそれが助けて聞いてうれしい。あなたは答えを受け入れるつもりですか? :-) –
はい。絶対に! – Leo