使用Redis的Key過期回調 ,實現訂單超時關閉

流程

1. 下單  存redis  key(token)  value(orderId)  ex失效時間  

2. 超時redis的key回調方法. 判斷key在庫中訂單狀態

3.根據訂單狀態,做業務處理

具體操作

1.redis配置文件開啓key過期回調

2.監聽接口

@Configuration
public class RedisListenerConfig {

    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory factory){
        RedisMessageListenerContainer container=new RedisMessageListenerContainer();
        container.setConnectionFactory(factory);
        return container;
    }
}

3.重寫失效回調方法(這裏的redis 的 key 最好做前綴處理,判斷key前綴匹配然後查詢 ,或者選定特定的庫存儲)

@Component
public class RedisKeyExpirationListerner extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListerner(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 使用該方法監聽 ,當我們的key失效的時候執行改方法
     */
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String keyExpira = message.toString();
        System.out.println("keyExpira======>>>>>>"+keyExpira);
        //拿到過期key ,處理業務邏輯
    }
}

4.測試回調 ,開啓redis客戶端 存值設置超時時間2秒 

4.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章