Spring integration 聚合器不';t从redis消息存储中释放消息

Spring integration 聚合器不';t从redis消息存储中释放消息,spring-integration,Spring Integration,他正在使用redis的聚合器,发现一些消息没有从redis中清除。我们使用SI类查询redis消息存储,发现没有找到任何消息,但我从命令行查询redis,那里仍然有消息 这是我查询组大小为零的redis消息的简单测试: @Autowired private RedisMessageStore loyaltyAggregatorRedisMessageStore; @Test public void testMessageStoreGroups() { MessageGr

他正在使用redis的聚合器,发现一些消息没有从redis中清除。我们使用SI类查询redis消息存储,发现没有找到任何消息,但我从命令行查询redis,那里仍然有消息

这是我查询组大小为零的redis消息的简单测试:

  @Autowired
  private RedisMessageStore loyaltyAggregatorRedisMessageStore;

  @Test
  public void testMessageStoreGroups() {
    MessageGroup group = loyaltyAggregatorRedisMessageStore.getMessageGroup("MESSAGE_GROUP_true");
    System.out.println(group.size());
}
但当我查询Redis时,我有以下输出:

1) "MESSAGE_8fdf96b5-ea0e-45a5-a8db-2b245fc909aa"
...
105) "MESSAGE_2772c17f-539c-c63e-1072-a5e46bb8f13d"
106) "MESSAGE_e42960e9-1801-5376-bbbc-897ad724e0ba"
107) "MESSAGE_a23c9e65-8b0e-4ee4-a3b3-4f90bcd88851"
108) "MESSAGE_1558ec12-a1dc-1afd-c8ea-d8f79ccdbb21"
109) "MESSAGE_GROUP_true"
110) "MESSAGE_a123b075-3f17-4140-d9c3-115295330b6a"
111) "MESSAGE_ba07d76f-641e-7d38-d942-cdccd4b6aa0e"
112) "MESSAGE_fe77a8aa-e273-d202-2c3f-6be7a7376153"
113) "MESSAGE_d89872b0-9b7f-5a94-24a4-62c577b04d37"
114) "MESSAGE_cf935ae2-5813-5636-79ef-4381e0da2982"
115) "MESSAGE_8435ce3f-8b89-6223-1713-72e221382cdd"
116) "MESSAGE_e27daf70-795b-b4db-a262-e94450b88d41"
117) "MESSAGE_a06ad5a9-fafb-b882-747a-31b62cd13425"
118) "MESSAGE_04fe2ae4-9bde-91e8-f136-39f7e8d225f7"
119) "MESSAGE_a13db3bb-246a-3f1a-ed08-1431be324766"
120) "MESSAGE_8423e0fd-0eda-5dcc-3fd9-7b428689c02e"

and more
你知道是什么导致了这个问题吗

提前谢谢
古兹曼

请展示您如何直接查询Redis

顺便说一句,RedisMessageStore是这样的:

AbstractKeyValueMessageStore

Object mgm = this.doRetrieve(MESSAGE_GROUP_KEY_PREFIX + groupId);
其中
MESSAGE\u GROUP\u KEY\u PREFIX
MESSAGE\u GROUP\u
。 所以,看起来您像这样过度查询了它
“MESSAGE\u GROUP\u true”

另一个地方出了点问题


如果消息仍保留在Redis中,那么我们的测试服务器将在很长一段时间前就已经崩溃了…

Hi Artem!我在密码上的错误。我更改了它,现在出现以下错误:java.lang.IllegalStateException:消息不可用,请获取整个组。我查找了MessageGroupMetadata,它有以下数据:complete=true,hasMessages=false,messages:[0aea96aa-da95-fd81-3431-13abebc13ecb,…,2772c17f-539c-c63e-1072-a5e46bb8f13d,…,e42960e9-1801-5376-bbbc-897ad724e0ba,…,1558ec12-a1dc-1afd-c8ea-D8F79CCDB21,…,53041154-4b57-bd5a-f169-D2305E7FF2]。hasMessage属性为false且消息列表不为空是否正确?忘了说,我使用redis命令“keys*”来列出消息列表!你知道吗?hasMessages=false和包含元素的消息列表是否正确?再次感谢你迟来的回复。您使用哪个版本的SI?您介意升级到最新版本吗?我在当前代码中没有看到
MessageGroupMetadata
如何为
hasMessages
获取
false
。仅构造函数中的
true