非同期 JMS アプリケーションを実装するにはどうすればよいですか? サーバープログラムを変更する必要がありますか、それともクライアントコードを変更する必要がありますか? 同期 JMS メッセージングを非同期に変更する方法を教えてください。
3888 次
2 に答える
2
とてもシンプルです。メッセージを非同期で受信するには、メッセージリスナーをコンシューマーに割り当てる必要があります。
consumer.setMessageListener(new MessageListener).
グーグルはあなたに多くのサンプルを取得します。
于 2012-07-23T08:31:03.510 に答える
1
Java EE のメッセージ駆動型 Bean は非同期です。自然に。単純な MDB は次のようになります。
@MessageDriven(mappedName = "jms/MyQueue") // JNDI name for a specific Destination (queue or topic)
public class MyMDB implements MessageListener{
public void onMessage(Message msg){
// handle it async.
}
}
それ以外の場合、プレーンな Java/JMS では、ほぼ同じ単純な同じコードですが、@MessageDriven アノテーションの代わりに、JMS コンシューマーを起動して実行するためにいくつかの初期化コードを実行する必要があります。もちろん、接続ファクトリの取得、接続の作成、宛先のルックアップなど、標準の JMS セットアップ手順も実行する必要があります。
public class MyConsumer implements MessageListener{
public void init(Connection conn, Destination dest){
// connection and destination from JNDI, or some other method.
Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer cons = sess.createConsumer(dest);
cons.setMessageListener(this);
conn.start();
}
@Override
public void onMessage(Message msg) {
// Do whatever with message
}
}
于 2012-07-24T21:52:45.657 に答える