1

すべてTibcoEMS5.*および.NETAPIのコンテキストで

私はメッセージ処理の既存のモデルに沿って作業する必要があります。

  • 接続が作成/開かれます
  • セッションが作成/開かれます
  • メッセージコンシューマが作成されます
  • receiveメソッドが呼び出されます

メッセージ!= nullの場合、それを消費し、トランザクションをコミットまたはロールバックします(基になるセッションで)。システムは、そのモデルでx秒ごとにプルします。

新しいセッションのみが作成されることを保証する接続ファクトリを作成しました(前のセッションがまだ使用されている場合)。このようにして、システムは同じ接続で動作します。

ただし、(。NETインターフェイスによる)各Receive呼び出しが1つのメッセージを返し、いくつか(pre-fetch-1)をローカルキューに入れるため、プリフェッチの問題が発生しました。したがって、すでにプルされているメッセージを読み取るために、次回は同じセッションを実際に再利用する必要があります。何かがある限り、セッションとメッセージのコンシューマーを再利用するためにラッパーを配置しました(Receiveはnullを返しません)。このアプローチは機能しますが、ローカルでフェッチされたものがまだある場合でも、Receiveでnullになる可能性があります。また、同じ接続を使用している限り、フェッチされたメッセージは配信済みとしてマークされるようです(セッションが明示的に閉じられている場合でも)。

誰かがプリフェッチ=1で接続/セッションを開く方法を知っていますか?または、より良い解決策がありますか?

前もって感謝します、

4

1 に答える 1

1

回避策: キュー レベルでプリフェッチをオフにします。

于 2011-02-10T16:31:40.130 に答える