Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在doIT()方法中阻止未准备好处理的消息进入此循环?_Java - Fatal编程技术网

Java 如何在doIT()方法中阻止未准备好处理的消息进入此循环?

Java 如何在doIT()方法中阻止未准备好处理的消息进入此循环?,java,Java,当我设置bpayrequestlist.size=maxmessagestoselect 1.e2000时,即使是尚未准备好处理的消息也会进入循环,它将变成一个无限循环。如何阻止未准备好处理的消息进入此循环?这是一个银行系统,在该系统中,像mt103这样的消息将作为客户的请求发送。所以这些信息必须被处理。我在while条件中遇到问题:while(bpayRequestsList!=null&&bpayRequestsList.size()==maxMessagesToSelect): 公共类Pa

当我设置bpayrequestlist.size=maxmessagestoselect 1.e2000时,即使是尚未准备好处理的消息也会进入循环,它将变成一个无限循环。如何阻止未准备好处理的消息进入此循环?这是一个银行系统,在该系统中,像mt103这样的消息将作为客户的请求发送。所以这些信息必须被处理。我在while条件中遇到问题:
while(bpayRequestsList!=null&&bpayRequestsList.size()==maxMessagesToSelect)

公共类PaymentRequestPlugin实现IPlugin
{
BpayDeliveryService BpayDeliveryService=BpayDeliveryService.instance();
私有最终整数ORACLE_MAX_IN_元素=1000;
私有静态最终整数最大值选择默认值=20000;
private int maxMessagesToSelect=MAX\u SELECT\u DEFAULT\u值;
私有主题付款请求插件=新主题(“付款请求插件”);
KundenZahlung kuza=null;
List kuzaList=new ArrayList();
List updatedBpayRequests=new ArrayList();
私有BpayDeliveryService bpay=BpayDeliveryService.instance();
@凌驾
public void doIt()抛出了PluginException
{
列表bpayRequestsList=null;
Trace.Trace(付款请求插件,“PaymentRequestPlugin doIt()”;
做
{
尝试
{
bpayRequestsList=bpay.getPaymentRequestPending(maxMessagesToSelect);
int-lIndex=0;
int-uIndex=0;
而(uIndexbpayRequestsList.size())
{
uIndex=bpayRequestsList.size();
}
列表BPAYRequestsListOnce=bpayRequestsList.subList(lIndex,uIndex);
doAtOnce(bpayRequestsListAtOnce);
lIndex=uIndex;
}
}
接住(插头)
{
pe.notifyEvent();
}
捕获(MVServiceNotAvailableException)
{
e、 printStackTrace();
}
捕获(例外e)
{
e、 printStackTrace();
}
}
while(bpayRequestsList!=null&&bpayRequestsList.size();
}

我可以建议使用几个选项,一个是使用对象数组,并将带有布尔值的消息传递给它,这个元素将创建一个对象数组 前

在主驱动程序中,您可以调用此函数以返回待处理的消息。在处理后,您可以将对象的布尔值设置为true

例如,检查消息是否已被处理的if语句类似于

   If(ArrayObject [at index].getTruth() == true)
然后处理消息


这是我处理此类任务的方式这可能不是最好的方式,但这是我所知道的最好的方式来完成我认为您提出的任务。

代码中的哪些信息表明消息尚未准备好处理?寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:如何创建。如果方法名为
bpay.getPaymentRequestPending()
返回未挂起的付款请求,该请求有问题,而不是您发布的代码中出现的问题。不清楚您在问什么。这是一个银行系统,像mt103这样的消息将作为客户请求发送。因此,这些消息必须在发送时进行处理(bpayRequestsList!=null&&bpayRequestsList.size()==maxMessagesToSelect);我在这个while条件下遇到了一个小问题,因为即使消息未处于可处理的就绪状态,它也会始终处理消息。这甚至不会编译…它不会编译,因为我刚刚放入了部分代码
 Public class objectOfOne
 {
      Public string message;
      Public boolean truth;
      //Constructor
      Public class objectOfOne (String        m; boolean t)
      {
            Message = m;
            Truth= true;
       }
       //Insert get and set methods here 
       // So you can update if message
       // Was processed

  }//End objectOfOne class
   If(ArrayObject [at index].getTruth() == true)