Browse Source

修复空循环的bug

master
blue 2 years ago
parent
commit
ae052321c5
  1. 1
      im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java
  2. 4
      im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java
  3. 4
      im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java

1
im-client/src/main/java/com/bx/imclient/listener/MessageListenerMulticaster.java

@ -27,7 +27,6 @@ public class MessageListenerMulticaster {
for(MessageListener listener:messageListeners){
IMListener annotation = listener.getClass().getAnnotation(IMListener.class);
if(annotation!=null && (annotation.type().equals(IMListenerType.ALL) || annotation.type().equals(listenerType))){
results.forEach(result->{
// 将data转回对象类型
if(result.getData() instanceof JSONObject){

4
im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java

@ -40,13 +40,13 @@ public class GroupMessageResultResultTask extends AbstractMessageResultTask {
if(!results.isEmpty()){
listenerMulticaster.multicast(IMListenerType.GROUP_MESSAGE, results);
}
} while (results.size() < batchSize);
} while (results.size() >= batchSize);
}
List<IMSendResult> loadBatch() {
String key = StrUtil.join(":", IMRedisKey.IM_RESULT_GROUP_QUEUE, appName);
//这个接口redis6.2以上才支持
//List<Object> list = redisTemplate.opsForList().leftPop(key, 100);
//List<Object> list = redisTemplate.opsForList().leftPop(key, batchSize);
List<IMSendResult> results = new LinkedList<>();
JSONObject jsonObject = (JSONObject) redisTemplate.opsForList().leftPop(key);
while (!Objects.isNull(jsonObject) && results.size() < batchSize) {

4
im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java

@ -41,13 +41,13 @@ public class PrivateMessageResultResultTask extends AbstractMessageResultTask {
if(!results.isEmpty()){
listenerMulticaster.multicast(IMListenerType.PRIVATE_MESSAGE, results);
}
} while (results.size() < batchSize);
} while (results.size() >= batchSize);
}
List<IMSendResult> loadBatch() {
String key = StrUtil.join(":", IMRedisKey.IM_RESULT_PRIVATE_QUEUE, appName);
//这个接口redis6.2以上才支持
//List<Object> list = redisTemplate.opsForList().leftPop(key, 100);
//List<Object> list = redisTemplate.opsForList().leftPop(key, batchSize);
List<IMSendResult> results = new LinkedList<>();
JSONObject jsonObject = (JSONObject) redisTemplate.opsForList().leftPop(key);
while (!Objects.isNull(jsonObject) && results.size() < batchSize) {

Loading…
Cancel
Save