不払いを達成するためにSpringBoot + Redisの注文は自動的に30分をキャンセル

Redisのは、ファイルredis.confを変更します

通知-キースペース - イベントが見つかりExがオープンスペースボンド障害通知の前で行をキャンセルするために、この行をコメント

pom.xml SpringBootプロジェクトにおける輸入依存度

        < 依存性> 
            < のgroupId > org.springframework.boot </ のgroupId > 
            < たartifactId >ばねブートスタータデータRedisの</ たartifactId > 
        </ 依存>

KeyExpirationEventMessageListenerからプロジェクトと継承の新しいリスナー

@Component 
@ SLF4J 
パブリック クラス RedisKeyExpirationListener 拡張KeyExpirationEventMessageListener { 

    @Autowired 
    プライベートOrderServiceのOrderServiceの、

    公共RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer){
         スーパー(listenerContainer); 
    } 

    @Override 
    公共 のボイドのonMessage(メッセージメッセージ、バイト[]パターン){
         // 自分自身を行うには、ユーザービジネスプロセスは)(message.toStringに注意を払うことができますキー取得できない場合があり 
        expiredKey =文字列message.toString()を; 
        log.info(「------------------ Redisのキー失敗;キー=「+expiredKey);
         IF (expiredKey.startsWith(GlobalConstant.RedisPrefixKey.ORDER_PREFIX)){
             // 注文ORDERNO取得 
            文字列ORDERNOは= expiredKey.substring(expiredKey.lastIndexOf( ":")。+ 1 );
             // 順に支給されますキャンセル(サービス残業)
            orderService.orderPaidTimeout(ORDERNO); 
        } 
    } 
}

新しい構成クラス

@Configuration
 パブリック クラスRedisListenerConfig { 

    @Bean 
    RedisMessageListenerContainer容器(RedisConnectionFactoryはconnectionFactory){ 
        RedisMessageListenerContainerコンテナ = 新しいRedisMessageListenerContainer()。
        container.setConnectionFactory(はconnectionFactory)。
        戻り値のコンテナ。
    } 

}

30分の無効な長さを設定する際に、ORDERNOのRedisのにキーを生成する際に注文します

Redisのは成功した支払指図書後のキーを削除し、そうでない場合は支払いが候補者がキャンセルされます成功しています

おすすめ

転載: www.cnblogs.com/yangwanhao/p/12638410.html