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