Redis pub/sub 异常,正常发布订阅一段时间 订阅者监听失效

发布于 2022-09-07 11:49:33 字数 3395 浏览 13 评论 0

1.redis pub/sub运行一段时间之后,在client中使用pubsub channels命令无法查询到订阅监听
2.项目启动后是能正常发布和订阅,订阅监听的程序有正常执行,但是大概凌晨1点左右之后,订阅那部分就没有响应了,pubsub channels也无法查询到,发布的位置正常。
3.redis的日志中无异常
4.有参考这https://blog.csdn.net/luyaoyi... 进行设置,目前配置是“"normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
5.以下是 redis.xml 对于pub/sub的监听配置

<bean id="redisMessageListener503" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">  
        <constructor-arg>  
            <bean class="com.sfa.ghs.webservice.listener.RedisMessageListener503"/>  
        </constructor-arg>  
    </bean>  
    <bean id="redisMessageListener68" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter">  
        <constructor-arg>  
            <bean class="com.sfa.ghs.webservice.listener.RedisMessageListener68"/>  
        </constructor-arg>  
    </bean>
    <bean id="redisContainer" class="org.springframework.data.redis.listener.RedisMessageListenerContainer">
        <property name="connectionFactory" ref="jeidsConnectionFactory" />
        <property name="messageListeners">
            <map>
                <entry key-ref="redisMessageListener503">
                    <list>
                        <!-- 普通订阅,订阅具体的频道 -->
                        <bean class="org.springframework.data.redis.listener.ChannelTopic">
                            <constructor-arg value="channel_503" />
                        </bean>
                    </list>
                </entry>
                <entry key-ref="redisMessageListener68">
                    <list>
                        <!-- 普通订阅,订阅具体的频道 -->
                        <bean class="org.springframework.data.redis.listener.ChannelTopic">
                            <constructor-arg value="channel_68" />
                        </bean>
                    </list>
                </entry>
            </map>
        </property>
    </bean>

6.以下是订阅实现类的部分代码

/**
 * 503消息订阅 - 数据清洗
 * 
 * @author 89003039
 * @date 2018年5月16日 下午6:45:33
 */
public class RedisMessageListener503 implements MessageListener, IRedisMessageListener {
    private static Logger logger = Logger.getLogger(RedisMessageListener503.class);
    
    @Autowired
    private IJoindataBroadWeightInfoBiz joindataBroadWeightInfoBiz;

    @Autowired
    private IJoinDataWsBiz joinDataWsBiz;

    @Autowired
    private JedisClient jedisClusterSingle;
    
    /**
     * 清洗503数据
     * 1.解析503数据
     * 2.根据车标+板箱从redis中获取67、68数据
     * 3.将503、67数据持久化
     * 4.将503数据存入redis 过期时间一分钟,持续清洗
     * @author 89003039
     * @return
     * @date 2018年5月28日 上午8:15:51
     */
    @Override
    public synchronized void onMessage(Message message, byte[] bytes) {
        logger.info("**** begin 503 data clear. ****");
        String msgContent = (String) jedisClusterSingle.getValueSerializer(message.getBody());
        String topic = (String) jedisClusterSingle.getStringSerializer(message.getChannel());
        logger.info("**** topic:" + topic + " ****");
        long begin = System.currentTimeMillis();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文