m0_46487759 2022-05-11 12:08 采纳率: 0%
浏览 390
已结题

redisson延时队列失效

一、问题简述:
1.本地环境中,将消息发送到RDelayQueue中后,等待消息超时后,消息自动到达RBlockQueue中,此时我监听RBlockQueue的代码获取消息并消费成功。
2.生产环境中,只有服务启动,销毁的时候。RDelayQueue中的延时消息才会到达RBlockQueue中。
可以正常发送消息到达redis中的RDelayQueue中,但消息超时后,无法到达RBlockQueue中,故导致监听RBlockQueue的代码获取不到延时消息,无法发布消息事件,导致消费无法被正常消费。
二、依赖版本及redis版本:
1.依赖版本boot2.1.5 redisson3.13.1
2.本地环境redis(win) v2.x 生产环境redis(阿里云资源) v4.x
三、延时队列实现的方案及配置
1.通过yml配置文件的方式配置单机redis(配置参考的官网)
2.BlockQueue(我的延时队列组件名称)初始化后,通过redissonClient获取RDelay和RBlock并赋值给成员变量
2.使用spring task定时任务扫描RBlockQueue中的数据,如果存在则通过事件发布组件(实现了AppcationContextAware接口的类)发布从阻塞队列中获取到的已超时的延时消息,并包装事件发布。
3.消息消费则是通过监听Event,从而获取消息内容进行业务消费。
四、现象
1.本地测试中,发送消息,延时超时,到达阻塞队列,获取消息,封装事件发布,消息监听消费。一整套数据流完全打通。可到生产环境中,就是不行。

  • 写回答

2条回答 默认 最新

  • BCS-点心 2022-05-11 13:39
    关注

    本地测试,生产不行,这样的问题开发中遇到过,我解决的方案是:
    1.查看本地跟线上依赖包版本是否相同
    2.通过日志查看问题具体出现的地方,具体解决

    像你这里,先要确定下问题出在哪个环节

    评论

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 修改了问题 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?