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