Spring integration Spring集成消息只有在达到一定容量后才会序列化,从而导致行为不一致

Spring integration Spring集成消息只有在达到一定容量后才会序列化,从而导致行为不一致,spring-integration,gemfire,Spring Integration,Gemfire,我们在spring集成消息序列化方面遇到问题。我们正在使用GemFire作为消息存储。当我们收到超过10k条消息时,我们会看到不一致的结果。 我有一节这样的课 {public class SplitReportInformationImpl implements Comparable { private transient List<Comparable> sortFields; public SplitReportInformationImpl(List

我们在spring集成消息序列化方面遇到问题。我们正在使用GemFire作为消息存储。当我们收到超过10k条消息时,我们会看到不一致的结果。 我有一节这样的课

{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;
       }
     }}
{公共类SplitReportInformationImpl实现了可比较的{
私人临时名单;
public SplitReportInformationImpl(列出排序字段){
this.sortFields=sortFields;
}
@凌驾
公共int比较(SplitReportInformation o2){
//这里是NullPointException
对于(int k=0;k
我们在getSortFields().size()的compareTo方法中获得NullPointerException。顺序读取数千个json,每个json创建一条消息,为每个json创建SplitReportInformationImpl对象并存储在消息中

有一个聚合器,它将消息组合在一起,并调用上面的compareTo方法。这就是导致NullPointException的原因。代码有点复杂,不容易放在这里,对于这个bug也没有用处,因为SplitReportInformationImpl对象是在聚合器之前创建的

有两组JSON,一组包含9k JSON,另一组包含3k JSON。如果先输入9k JSON,那么它们都会生成正确的输出,并且没有任何错误;如果在之后直接输入3k JSON,则会对其中一些JSON抛出NullPointException,如上所述

我的问题是,如果spring消息正在序列化消息,它应该始终序列化,并且应该始终通过NullPointException,因为sortField变量是瞬态的


如果Spring消息根本没有序列化,那么我们就不应该得到NullPointException。

以前从未见过这种情况。这确实是
瞬态
和Java序列化的一个问题,但既然您说它不那么一致,那么它就以某种方式与Gemfire一起出现了。当数据存储到本地缓存时,可能没有任何序列化,但当数据进入复制时,会清除一个
瞬态
属性。我们绝对需要一个最小的代码来播放和复制。尽管您仍然需要考虑在没有瞬态的情况下更改逻辑,但您能否只加载3k json并让我们知道发生了什么?