消息驱动Bean:成功使用后使每个消息出队

时间:2018-09-04 10:01:09

标签: transactions weblogic commit message-driven-bean queue-table

我无法创建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)");
    }
}

0 个答案:

没有答案