Java MDB onMessage直到ejbTimeout结束才开始。不应该';它不是异步启动的吗?
我们有一个javax.ejb.TimedObject,它将消息排队到一个MDB,比如Java MDB onMessage直到ejbTimeout结束才开始。不应该';它不是异步启动的吗?,java,weblogic-10.x,message-driven-bean,Java,Weblogic 10.x,Message Driven Bean,我们有一个javax.ejb.TimedObject,它将消息排队到一个MDB,比如 ctx = new InitialContext(); QueueConnectionFactory qCF = (QueueConnectionFactory) ctx .lookup("java:comp/env/jms/queueconnfactory"); Queue q = (Queue) ctx.lookup("java:comp/env/jms/queue"); conn = qC
ctx = new InitialContext();
QueueConnectionFactory qCF = (QueueConnectionFactory) ctx
.lookup("java:comp/env/jms/queueconnfactory");
Queue q = (Queue) ctx.lookup("java:comp/env/jms/queue");
conn = qCF.createQueueConnection();
session = conn.createQueueSession(true,
Session.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(q);
TextMessage txtMsg = session.createTextMessage();
txtMsg.setLongProperty(JobMonitorUtil.JOB_REFERENCE_ID, filingId);
txtMsg.setLongProperty(JobMonitorUtil.JOB_ID, jobId);
txtMsg.setLongProperty(JobMonitorUtil.JOB_RUN_SID, jobRunSId);
sender.send(txtMsg);
session.close();
conn.close();
当我调试这个(在Weblogic 10.3.1.0上)时,我跳过sender.sent(txtMsg)行,我希望我的onMessage断点几乎在瞬间被击中。直到我让ejbTimeout运行(实际上是当我跳出TimerImpl.timerExpired时),它才到达我的断点。消息队列位于生成消息的同一服务器上
对我来说,这似乎很奇怪
- MDB消息不是异步发送的吗李>
- 这可能是一个配置问题,还是它应该是这样工作的
session = conn.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
我刚试过这个,没什么区别。我得到的会话是JMXASession,conn是weblogic.deployment.jms.PooledConnection\u weblogic\u jms\u client\u XAConnectionInternalImpl。另外,我在weblogic控制台中看到,连接工厂已选中“XA连接工厂已启用”。因此,您可以通过配置获得事务队列。这种行为很合适。然后将其设置为非事务性,或者在关闭()后停止调试器。