REST サーバーに送信したい Observable があります。接続が失敗した場合、永遠に送信を再試行したい。接続障害中にデータが変更された場合は、代わりに新しいデータを送信する必要があります。
これは、容量 1 の JobQueue で実装でき、2 種類のメソッド (forceEnqueue(Job job) と weakEnqueue(Job job)) を提供できると考えました。これで、接続が失敗したときに、ジョブ自体が weakEnqueue() を試行できるようになりました。キューがすでにいっぱいの場合、これは失敗します。新しいデータが利用可能な場合、強制的にキューにプッシュされるため、すでにキューに入れられている可能性のある再試行呼び出しが排除されます。
BlockingQueue または ConcurrentLinkedQueue を使用してこの動作を実装できませんでした。この種の要件をサポートする Java にスレッドセーフなキューがありますか、またはこの問題を間違った方法で解決しようとしていますか?