这是一个奇怪的问题,请提供任何帮助。
我正在处理一个Spring Batch作业,该作业将事务发送到Kafka主题,当成功时,状态代码将以字符串的形式返回:";C";。有一个检查这个状态代码是否为空,如果是,它将给出一个适当的错误消息,如下所示,稍后输出到一个表上。
if (kafkaWriter.getKafkaStatusCode() == null)
{
messagingResultCode = CommonConstants.KAFKA_NULL_RESULT;
}
因此,由于上面的代码,对于作业所拾取的几个事务,我得到了一条Kafka null结果错误消息,因此我进行了调试,以查看在设置messagingResultCode的位置放置断点时发生了什么。
但当我评估";kafkaWriter.getKafkaStatusCode((==空"它显示为";(布尔值(false";在Spring Tools Suite中。当查看KafkaStatusCode时,它显示为";C";所以肯定不是null,但它仍然进入了代码中。
getKafkaStatusCode((所做的只是返回一个字符串:
public String getKafkaStatusCode() {
return kafkaStatusCode;
}
这种情况只发生在服务器上运行的第一个作业上(我使用的是Liberty(,在所有后续运行中,代码的行为都与预期一致。
我已经尝试将String messagingResultCode初始化为null"和一个默认值,但每次都会发生同样的事情。
感谢
"。或者:(time/(异步已到位;((即调试影响结果;(–xerx593 3小时前";
@xerx593你是对的,调试器没有向我显示正确的值,这是我在添加一些额外的日志并在非调试中运行它之后发现的。
事实证明,你不能一直信任调试器:(
感谢