このキューからメッセージを消費する他のプログラムがメッセージを受信できるように、トランザクションおよびある時点のロールバックで複数のキューのメッセージを受信するにはどうすればよいですか?このキューからメッセージを消費し、他のプログラムがメッセージを受信できるようにロールバック受信されたjmsメッセージ
ObjectMessage obj = (objectMessage) consumer.receive();
ObjectMessage obj2 = (ObjectMessage) consumer.receive(10000);
if(obj2 == null) session.rollback(); //if we haven't received thesecond message after 10 second, also the first message should be rolled back so other consumerprograms can take it.
よろしくお願いいたします。私はすべての消費者にメッセージを伝えたくありません。 「サーバ」はキューにメッセージを送信します。 Programm aはこれらのメッセージを消費し、新しいメッセージが10秒以上待っていれば、受信したメッセージを書き戻して他のコンシューマーがそれを受け取れるようにする必要があります。ロールバックするのが正しい方法ではありませんか? – Moonlit
編集された回答。助けてくれることを望む。 – neo
メッセージは車のコンポーネント(エンジン、タイヤ、シャーシ)に似ています。クライアントはメッセージを消費し、メッセージを使用して車を構築します。クライアントはすでに(コミットされていないトランザクションセッションで)エンジン、シャーシ、3つのタイヤを受け取っていると言いますが、新しいTireメッセージは到着しません。この場合、クライアントはすべてのコンポーネント(3つのタイヤ、エンジンとシャーシ)を待ち行列に入れておくことで、シャシーが車を完成させるのを待つ別のクライアントを待ちます。したがって、私は失敗時に書き戻したくないですが、タイムアウトになります(30秒後に新しいコンポーネントが届かない場合は書き戻します) – Moonlit