关于检索数据时按顺序排列的条件

时间:2014-03-08 16:08:42

标签: java tibco

我必须实现一种方法,其中将有一个侦听器,它将从队列中读取消息,然后它将这些消息发送到表中。现在我关心的是可以有1条消息或10条消息。我必须逐个阅读它们并将这些消息转储到表中;我已经实现了它,但我怀疑我放的条件不正确。你能告诉我们下面的条件是否合适。

@Transactional(rollbackFor = { Throwable.class })
public String dumpMesagesFromabcQueue() {
    String tibcoQueueName = configuration.getSpecificConfiguration(Constants.DFR_QUEUE);
    jmsTemplate.setDefaultDestinationName(tibcoQueueName);
    jmsTemplate.setPubSubDomain(false);

    try {
        while (tibcoUtility.getQueueMessagePendingCount(tibcoQueueName) != 0) {
            Message message = jmsTemplate.receive();
            String messageType = null;
            String cashFlowMesg = null;
            if (message instanceof ObjectMessage) {
                try {
                    ObjectMessage objMessage = (ObjectMessage) message;
                    String[] messageArray = (String[]) objMessage.getObject();
                    cashFlowMesg = messageArray[0];
                    messageType = messageArray[1];
                    abcHelper.ttt(rrr, null, ddd, eee, rrrrrr, trw, tyi, new Throwable(ero));
                } catch (JMSException e) {
                    logger.error("   Error retriving messages from error queue to ttt queu ", e);
                    throw new RuntimeException(e);
                }
            }
        }
    } catch (TibjmsAdminException exp) {
        String err = "<font color=red><b>Error encountered while processing  queue ";
        err += exp.toString();
        err += "</b></font>";
        return err;
    }
    return "<font color=blue><b>Messages consumed successfully </b></font>";
}

1 个答案:

答案 0 :(得分:0)

我觉得这很简单。免责声明:我为JEE / Oracle AQ开发了许多JMS程序,但我没有使用过Tibco / Spring的JMSTemplate。

此方法将负责处理具有一定限制的队列。如果有错误,则返回false。应该有一些使用这种方法的表示方法,如果需要,将格式化错误信息。

@Transactional(rollbackFor = {Throwable.class})
public boolean dumpMesagesFromabcQueue() {
    String tibcoQueueName = configuration.getSpecificConfiguration(Constants.DFR_QUEUE);
    jmsTemplate.setDefaultDestinationName(tibcoQueueName);
    jmsTemplate.setPubSubDomain(false);

    int i = 0, limit = configuration.getSpecificConfiguration(Constants.FETCH_QUEUE_SIZE);
    while (i < limit) {
        Message message = jmsTemplate.receive();
        if (message == null) {
            return true;
        }
        i++;
        if (message instanceof ObjectMessage) {
            try {
                ObjectMessage objMessage = (ObjectMessage) message;
                String[] messageArray = (String[]) objMessage.getObject();
// unused                   String cashFlowMesg = messageArray[0];
// unused                   String messageType = messageArray[1];
                abcHelper.ttt(rrr, null, ddd, eee, rrrrrr, trw, tyi, new Throwable(ero));
            } catch (JMSException e) {
                logger.error("   Error retriving messages from error queue to ttt queu ", e);
                return false;
            }
        }
    }
    return true;
}