3

JMS HornetQと永続メッセージを使用したArquillian統合テストがあります。一部のテストでは、メッセージング ジャーナルが未処理のメッセージでいっぱいになり、データがないことを期待する他のテストが中断されます。

テストの実行前または実行後にJMSにメッセージング ジャーナルを消去するように指示する方法はありますか?

4

2 に答える 2

6

これは JMS API 自体には存在しませんが、HornetQ QueueControl 管理オブジェクトにメソッド「removeMessages(filter)」があります。このメソッドはキューの JMX Bean にありますが、Arquillian でそれを取得する方法がわかりません。

幸いなことに、「hornetq.management」キューを介して管理操作を呼び出すことができます。http://docs.jboss.org/hornetq/2.2.5.Final/user-manual/en/html/management.htmlを参照してください。実際には、次のように動作するはずです。

     Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management");
     QueueRequestor requestor = new QueueRequestor(session, managementQueue);
     Message m = session.createMessage();
     JMSManagementHelper.putOperationInvocation(m,
                                                "jms.queue.exampleQueue",
                                                "removeMessages","*");
     Message reply = requestor.request(m);
     boolean success = JMSManagementHelper.hasOperationSucceeded(reply);
于 2012-09-20T11:39:25.873 に答える
2

サーバーを再起動する場合は、ページング フォルダーとデータ フォルダーを削除できます (バインディングを維持したまま)。

于 2012-09-21T15:11:18.973 に答える