我无法创建MDB应用程序以在成功使用后使每条消息出队。
当前,似乎在单个事务中消耗了多条消息,这是在我关闭MDB应用程序时提交的。
结果,仅当我关闭MDB应用程序时,才为所有消耗的消息设置队列表中的出队信息(DEQ_TIME,DEQ_UID等)。所有出队消息都使用相同的DEQ_TIME,即使它们在不同的时间被消耗。
此外,如果抛出某些运行时异常,则将重新发送并重新处理所有未提交但已处理的消息。
Weblogic 12c配置:XAQueueConnectionFactory用于连接工厂。
我的MDB配置:(默认情况下使用容器管理的事务):
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "connectionFactoryLookup",
propertyValue = "jms/my-service-qcf"),
@ActivationConfigProperty(propertyName = "destinationLookup",
propertyValue = "jms/MyQueue"),
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
})
public class ReceiveController implements MessageListener, TransportListener {
@Override
public void onMessage(Message message)
{
if (message instanceof TextMessage) {
log.info("---------- Got text message ----------");
sendEmail((TextMessage)message);
} else {
log.severe("Invalid message type (TextMessage expected)");
}
}