我试图在weblogic 10r3服务器上调试web应用程序hostde。该应用程序通过Java消息驱动Bean接收来自外部IBM JMS队列(类名:com.ibm.mq.jms.MQQueue
)的输入。JMS毒害信息删除
我写了一个小测试应用程序连接到该队列并发送测试消息。现在的问题是测试消息会产生异常,并以某种方式将其放回队列并一次又一次地循环。这产生了很多例外,导致日志不可读。
首先我想通过我的测试应用程序构建消费者删除带毒邮件,但代码块无限期consumer.receive()
。
然后我试图设置JMSexpiration
一些数字,而不是缺省值0,但在最后的消息仍然使用0作为过期。
所有的想法表示欢迎,非常感谢
代码大纲的JMS监制:
static String rawTradeUpload = "some long chunk of data"
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
weblogic.jndi.WLInitialContextFactory.class.getName());
//ht.put(Context.PROVIDER_URL, "t3://gprimeap1d.eur.nsroot.net:12016");
ht.put(Context.PROVIDER_URL, "t3://gprimeap1d.eur.nsroot.net:12001");
ht.put(Context.SECURITY_PRINCIPAL, "weblogic");
ht.put(Context.SECURITY_CREDENTIALS, "welcome5");
Connection con = null;
Session s = null;
try {
if(ctx == null)
ctx = new InitialContext(ht);
ConnectionFactory myConnFactory = null;
Queue myQueue = null;
myConnFactory = (ConnectionFactory) ctx
.lookup("SwiftConnectionFactory");
con = myConnFactory.createConnection();
s = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
myQueue = (Queue) ctx
.lookup("IncomingSwiftFxQueue");
MessageProducer producer = s.createProducer(myQueue);
Message msg = s.createTextMessage(rawTradeUpload);
producer.send(msg);
s.close();
con.close();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您可以发布创建消息的代码的一些部分并将消息写入队列吗? –
嘿凯文,这里是生产者的代码,我也写了一个消费者和队列浏览器。它都是从同一个会话创建的 –
感谢Peter和Zahir,我会向MQ团队咨询关于退出队列设置的信息。 –