我们在spring集成消息序列化方面遇到问题。我们将GemFire作为消息存储库。当我们收到超过1万条消息时,我们将看到不一致的结果。 我有这样的课程
{public class SplitReportInformationImpl implements Comparable {
private transient List<Comparable> sortFields;
public SplitReportInformationImpl(List<Comparable> sortFields) {
this.sortFields = sortFields;
}
@Override
public int compareTo(SplitReportInformation o2) {
// here NullPointException
for (int k =0; k < getSortFields().size(); k++) {
int result = getSortFields().get(k)
.compareTo(o2.getSortFields()
.get(k));
if (result != 0) {
return result;
}
}
return 0;
}
}}
我们在getSortFields()。size()的compareTo方法中得到了NullPointerException。有成千上万个json顺序读取,每个json创建一个消息,并为每个json创建SplitReportInformationImpl对象并将其存储在消息中。
有一个聚合器组合消息,该聚合器调用上面的compareTo方法。那就是它导致NullPointException的地方。代码有点复杂,不容易放在这里,并且对这个错误没有用,因为SplitReportInformationImpl对象是在聚合器之前创建的。
有两组json,一组包含9k json,另一组包含3k json。如果首先输入9k json,那么它们都会产生正确的输出而没有任何错误;如果直接输入3k json,则如上所述会为其中的一些抛出NullPointException。
我的问题是,如果spring消息正在序列化消息,则应该始终进行序列化,并且应该始终通过NullPointException进行处理,因为sortField变量是瞬时的。
如果Spring消息根本没有序列化,那么我们根本不应该获取NullPointException。