私は2つのアプリケーションを持っています:
- デスクトップ(Javaの)
- ウェブ(symfonyの)
私は、Webアプリケーションのデータと一致していなければならないのデスクトップアプリでいくつかのデータを持っています。
だから、基本的に私は、送信POST
データをオンラインで更新するために、Webアプリケーションにデスクトップアプリケーションからの要求を。
しかし、問題は、私は私の要求を送信するときに、インターネットは常に利用することができないということであると私はデスクトップのデータを更新するからユーザーを防ぐことはできません同じ時間に
これまでのところ、これは私が時にデータを同期することを確認するために心を持っているものですインターネットが利用可能です。
私は正しい方向にかいないのですか?
そうでない場合、私はあなたたちはプロのやり方で自分の目標を達成するための正しい道に私を入れたいと考えています。
話題のこの種についての任意のリンクは理解されるであろう。
あなたがトランザクションで非トランザクションの外部システムへのメッセージを送りたいとあなたはデータがそれを失うことなく、できるだけ早く、外部システムに転送されることをgaranteeする必要がある場合には、典型的なシナリオです。
2つのソリューションは、多分二フィットより良いあなたのアーキテクチャに、私の心の中で出てきます。
ユースケース1)
あなたは死んで文字パターンを設定するメッセージキュー+再配信制限を使用することができます。トンで、その場合は、アプリケーション・サーバーを持っている必要があります。
ここであなたはデッドレターパターンの詳細を読むことができます。
この文書では、再配信制限は、WebLogic Server上で動作する方法を説明します。
ユースケース2)
あなたはdestopアプリケーションのデータベースにインターフェース・テーブルを作成することができます。その後、データベースにあなたの元のデータを挿入し、(すべて同じトランザクション内で)と同様のインタフェーステーブルに新しいレコードを挿入します。あなたがPOSTに何をしたいデータがうまくとしてインタフェーステーブルに挿入する必要があります。インタフェーステーブルの新しいレコードのステータスフラグが「することができます到着しました」。そして、「ステータスを持つインタフェーステーブル内のレコードを定期的に検索し、デスクトップアプリで独立したタイマーの作成に到着します」。このタイマー制御プロセスは、WebサービスへのPOSTデータにしようとします。HTTPレスポンスが200の場合、「にレコードのステータスを更新SENT」。
ブートは、魔法のように動作することができます。