apache / apache/rocketmq

[Bug] Bug title 延迟消息和定时消息都存在rmq_sys_wheel_timer,未向实际队列投递

Open
#8,022 8 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
22.6k
Forks
12k
Avg merge
2d 20h
Merged PRs (30d)
26

Description

### Before Creating the Bug Report

- [X] I found a bug, not just asking a question, which should be created in [GitHub Discussions](https://github.com/apache/rocketmq/discussions).

- [X] I have searched the [GitHub Issues](https://github.com/apache/rocketmq/issues) and [GitHub Discussions](https://github.com/apache/rocketmq/discussions) of this repository and believe that this is not a duplicate.

- [X] I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.

### Runtime platform environment

windows docker desktop

### RocketMQ version

rocketmq 5.2
![image](https://github.com/apache/rocketmq/assets/39292626/26db2f32-eb0d-4c5d-92a7-165851297dce)
![image](https://github.com/apache/rocketmq/assets/39292626/b6b84335-ba84-47a2-bb49-1a6bae46e9aa)

rocketmq-spring-boot-starter 2.3.0

### JDK Version

jdk 21

### Describe the Bug

我在本地用docker启动的rocketmq,发送普通消息和消费是正常的,发送延迟消息成功但是无法消费,未向实际队列投递。
检查了rocketmq版本,docker时间 等因素,查阅各种资料均无解。
timerWheelEnable=true源码看了,也设置了。
队列是用mqadmin手动创建的,声明了DEALY
admin tool和console都没有工具能看到store里message的数据,如消息类型,投递时间之类的。
目前的表现就是只会存在rmq_sys_wheel_timer而不向实际的队列里投递。
(注:我只启动了nameser 和broker,没有单独启动proxy,新出来的东西描述太模糊了)

rocketmq启动命令
`docker run -d -p 9876:9876 --name rmqnamesrv --memory=512m -v "E:\Java\Program Files\Docker\namesrv\logs:/home/rocketmq/logs" -v "E:\Java\Program Files\Docker\namesrv\store:/home/rocketmq/store" -e TZ=Asia/Shanghai apache/rocketmq sh mqnamesrv`
`docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker-m1 -v "E:\Java\Program Files\Docker\broker\logs-m1:/home/rocketmq/logs" -v "E:\Java\Program Files\Docker\broker\store-m1:/home/rocketmq/store" -v "E:\Java\Program Files\Docker\conf\broker-m1.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf" --add-host namesrv:192.168.28.66 -e "NAMESRV_ADDR=namesrv:9876" -e TZ=Asia/Shanghai apache/rocketmq:latest sh mqbroker -n namesrv:9876 -c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf autoCreateTopicEnable=true`

发送代码
rocketMQTemplate.syncSendDelayTimeSeconds("NewDelayTopic", person, 9);
响应
SendResult [sendStatus=SEND_OK, msgId=A9FEB4449C0C36BAF30C4C53AC680000, offsetMsgId=C0A81C4200002A9F000000000000B713, messageQueue=MessageQueue [topic=NewDelayTopic, brokerName=rcfeng-broker-m1, queueId=0], queueOffset=50]
控制台
![image](https://github.com/apache/rocketmq/assets/39292626/7ed149d3-ad50-4257-99a6-c676cb747304)
store里有数据
![image](https://github.com/apache/rocketmq/assets/39292626/427a72fa-2d28-4e06-8e42-dc77b450aa77)

### Steps to Reproduce

1

### What Did You Expect to See?

1

### What Did You See Instead?

1

### Additional Context

1

Contributor guide

Open the contributing guide

Research direction

Reproduce with RocketMQ 5.2 using the broker.conf setting timerWheelEnable=true, the Docker commands, and rocketMQTemplate.syncSendDelayTimeSeconds("NewDelayTopic", person, 9). Inspect rmq_sys_wheel_timer and the broker store, then verify whether the delayed message reaches the actual topic queue and can be consumed. The issue provides no named test or source file, so start with the timer-wheel delivery path and broker logs.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, java, spring-boot
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.