2

質問

メッセージ駆動型Beanを(プログラムで)停止して、新しいメッセージを消費せず、実行中のトランザクションを通常どおりに処理することは可能ですか?

(これは、アンデプロイする前にメッセージ処理を停止する方法のフォローアップです?)。

与えられた

  • JBossMessagingを使用したJBoss4.2.3
  • EJB2.0に準拠したメッセージ駆動型Bean

失敗した試み

  • MBeanメソッドを使用したいのですstopDeliveryが、残念ながらトランザクションがすぐに閉じられ(バグ#EJBTHREE-1870を参照)、多くの例外が発生します。
  • JMXコンソールで最大プールサイズを0に減らしようとしましたが、アクティブなセッションの数はまったく影響を受けません。
  • キューを停止することはできますがNameNotFoundException、プロデューサー内でsを処理する必要があります。
4

1 に答える 1

1

さて、ここでは、ほぼすべてがラッパーで実現できます。MDB にメッセージを受信させ続けることができますが、ブール値の stopDelivery を導入し、メッセージがビジネス ロジックによって処理される前に、stopDelivery が true に設定されているかどうかを確認します。 、メッセージを元のキューに再送信します。

そのため、キューでさえまだ動いていますが、stopDelivery の設定を解除しない限り、キューの内容は一種のフリーズ状態です

于 2012-07-02T14:38:37.957 に答える