Commit e9645d7054db531e02910c7ea89f35b09aea2fe4
1 parent
46f37904
fix: 解决 redis mq 消息丢失问题
Showing
1 changed file
with
5 additions
and
5 deletions
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/scheduler/RedisPendingMessageResendJob.java
| ... | ... | @@ -61,17 +61,17 @@ public class RedisPendingMessageResendJob { |
| 61 | 61 | |
| 62 | 62 | listeners.forEach(listener -> { |
| 63 | 63 | PendingMessagesSummary pendingMessagesSummary = ops.pending(listener.getStreamKey(), groupName); |
| 64 | - // 每个消费者的pending消息数量 | |
| 64 | + // 每个消费者的 pending 队列消息数量 | |
| 65 | 65 | Map<String, Long> pendingMessagesPerConsumer = pendingMessagesSummary.getPendingMessagesPerConsumer(); |
| 66 | 66 | pendingMessagesPerConsumer.entrySet().forEach(entry -> { |
| 67 | 67 | String consumerName = entry.getKey(); |
| 68 | 68 | Long pendingMessageCount = entry.getValue(); |
| 69 | 69 | log.info("[processPendingMessage][消费者({}) 消息数量({})]", consumerName, pendingMessageCount); |
| 70 | 70 | |
| 71 | - // 从消费者的pending队列中读取消息 | |
| 72 | - List<MapRecord<String, Object, Object>> retVal = ops.read(Consumer.from(groupName, consumerName), StreamOffset.create(listener.getStreamKey(), ReadOffset.from("0"))); | |
| 73 | - if (CollUtil.isNotEmpty(retVal)) { | |
| 74 | - for (MapRecord<String, Object, Object> record : retVal) { | |
| 71 | + // 从消费者的 pending 队列中读取消息 | |
| 72 | + List<MapRecord<String, Object, Object>> records = ops.read(Consumer.from(groupName, consumerName), StreamOffset.create(listener.getStreamKey(), ReadOffset.from("0"))); | |
| 73 | + if (CollUtil.isNotEmpty(records)) { | |
| 74 | + for (MapRecord<String, Object, Object> record : records) { | |
| 75 | 75 | // 重新投递消息 |
| 76 | 76 | redisTemplate.getRedisTemplate().opsForStream().add(StreamRecords.newRecord() |
| 77 | 77 | .ofObject(record.getValue()) // 设置内容 | ... | ... |