再試行の期限が切れた後のJBoss 4.2.2メッセージキューからメッセージを再送信する方法
質問
のJBoss 4.2.2メッセージキューに期限切れのメッセージを再送信する方法はありますか?問題は、彼らが再試行額を超過しているが、今の問題は固定であるので、それらを再送信する方法は何ですか?
JBossの3で、彼らは単にあなたの周りに動くことができるテキストファイルされました。今では、データベースに格納されていることを、どのようにそれを行うことができますか?
解決 2
これは私がやってしまった何をされます:
Hashtable t = new Hashtable();
t.put(Context.PROVIDER_URL, "localhost:1099");
t.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
Context ctx = new InitialContext(t);
Queue q = (Queue) ctx.lookup("/queue/DLQ");
//----------------------------
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("/ConnectionFactory");
Connection connection = cf.createConnection();
Session session = connection.createSession(true, 0);
//---------------------------------
MessageConsumer consumer = session.createConsumer(q);
connection.start();
SpyObjectMessage m;
Queue originialDestination = null;
//There can only be one in my case, but really you have to look it up every time.
MessageProducer producer = null;
while ((m = (SpyObjectMessage) consumer.receive(5000)) != null) {
Object o = m.getObject();
Date messageDate = new Date(m.getJMSTimestamp());
String originalQueue = m.getStringProperty("JBOSS_ORIG_DESTINATION");
if (originialDestination == null) {
originialDestination = (Queue) ctx.lookup("/queue/" +
originalQueue.substring(originalQueue.indexOf('.') + 1));
producer = session.createProducer(originialDestination);
}
producer.send(session.createObjectMessage((Serializable) o));
m.acknowledge();
}
//session.commit(); //Uncomment to make this real.
connection.close();
ctx.close();
他のヒント
エルメスJMS のを見てください。これは、ブラウジングJMSキューおよびトピックのためのオープンソースのツールです。これは、ブローカーの配信不能キューに終わるメッセージを再生することができます。
注:私はCodeStreetのために働く。
製品私たちの「JMS用リプレイサービス」は、このユースケースのために正確に構築されています。以前に発表されたメッセージ(n回の配信)を検索し、検索 - JMSが本当に1回の配信のために設計されている。
JMS用リプレイサービスでは、あなたのトピックまたはキューに発行されたすべてのメッセージを記録するためのWebLogic記録を構成します。 WebベースのGUIを通じて、あなたは(サブストリングのXPathまたはJMSセレクターで)個々のメッセージを検索することができますし、元のJMS宛先にそれらを再度リプレイます。
http://www.codestreet.com/marketdata/jms/jms_details.phpを参照してください。詳細はこちらます。
所属していません StackOverflow