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

Java 关于检索数据时按顺序排列的条件,java,tibco,Java,Tibco,我必须实现一种方法,其中将有一个侦听器,它将从队列中读取消息,然后将这些消息发送到表中。现在我关心的是可能有1条或10条消息。我必须一个接一个地读,然后把这些信息倒进表中;我已经实施了它,但我怀疑我提出的条件没有按照正确的顺序排列。你们能告诉我下面的情况是否正确吗 @Transactional(rollbackFor = { Throwable.class }) public String dumpMesagesFromabcQueue() { String tibcoQueueName

我必须实现一种方法,其中将有一个侦听器,它将从队列中读取消息,然后将这些消息发送到表中。现在我关心的是可能有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>";
}
@Transactional(rollboor={Throwable.class})
公共字符串dumpMesagesFromabcQueue(){
字符串tibcoQueueName=configuration.getSpecificConfiguration(Constants.DFR_QUEUE);
setDefaultDestinationName(tibcoQueueName);
setPubSubDomain(false);
试一试{
while(tibcoUtility.getQueueMessagePendingCount(tibcoQueueName)!=0){
Message Message=jmsTemplate.receive();
字符串messageType=null;
字符串cashFlowMesg=null;
if(ObjectMessage的消息实例){
试一试{
ObjectMessage objMessage=(ObjectMessage)消息;
String[]messageArray=(String[])objMessage.getObject();
cashFlowMesg=messageArray[0];
messageType=messageArray[1];
ttt(rrr、null、ddd、eee、rrrrrr、trw、tyi、新可丢弃(ero));
}捕获(JME){
logger.error(“从错误队列到ttt queu的错误检索消息”,e);
抛出新的运行时异常(e);
}
}
}
}捕获(TibjmsAdminException exp){
String err=“处理队列时遇到错误”;
err+=exp.toString();
错误+=”;
返回错误;
}
返回“消息已成功消费”;
}

我觉得事情很简单。免责声明:我已经为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;
}
@Transactional(rollboor={Throwable.class})
public boolean dumpMesagesFromabcQueue(){
字符串tibcoQueueName=configuration.getSpecificConfiguration(Constants.DFR_QUEUE);
setDefaultDestinationName(tibcoQueueName);
setPubSubDomain(false);
int i=0,limit=configuration.getSpecificConfiguration(常量.获取队列大小);
while(i
很抱歉,我不知道tibco给您发送的消息。我建议您使用一些计数器来限制循环,当达到某个限制时,计数器会使循环中断。我不喜欢业务逻辑方法中的HTML格式。我不知道您的代码,但是在这里返回true/false并在别处创建格式化的用户消息会更干净。这将使您的代码更灵活、更易于测试。顺便说一句,是否有必要使用tibcoUtility.getQueueMessagePendingCount()?为什么不依赖于jmsTemplate内部循环,并在返回null或达到限制时中断。@LeosLiterak谢谢你能不能编写伪代码,以便我能理解更多的感谢