记得上下班打卡 | git大法好,push需谨慎

Commit da6cf45a authored by 张国柄's avatar 张国柄

consumer.kylin删除candy相关消费逻辑;

parent cfbef2dc
package com.liquidnet.service.consumer.kylin.config; //package com.liquidnet.service.consumer.kylin.config;
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver; //import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver;
import lombok.var; //import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer; //import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord; //import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset; //import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset; //import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer; //import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription; //import org.springframework.data.redis.stream.Subscription;
//
import java.time.Duration; //import java.time.Duration;
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_BACK; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_BACK;
//
//
@Configuration //@Configuration
public class ConsumerCandyCouponBackRedisStreamConfig { //public class ConsumerCandyCouponBackRedisStreamConfig {
@Autowired // @Autowired
ConsumerCandyCouponBackRdsReceiver consumerCandyCouponBackRdsReceiver; // ConsumerCandyCouponBackRdsReceiver consumerCandyCouponBackRdsReceiver;
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) { // private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer // var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions // .StreamMessageListenerContainerOptions
.builder() // .builder()
.pollTimeout(Duration.ofMillis(1)) // .pollTimeout(Duration.ofMillis(1))
.build(); // .build();
return StreamMessageListenerContainer.create(factory, options); // return StreamMessageListenerContainer.create(factory, options);
} // }
//
/** // /**
* 缺票登记 // * 缺票登记
* // *
* @param listenerContainer // * @param listenerContainer
* @param t // * @param t
* @return // * @return
*/ // */
private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) { // private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck( // return listenerContainer.receiveAutoAck(
Consumer.from(COUPON_BACK.getGroup(), COUPON_BACK.name() + t), // Consumer.from(COUPON_BACK.getGroup(), COUPON_BACK.name() + t),
StreamOffset.create(COUPON_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponBackRdsReceiver // StreamOffset.create(COUPON_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponBackRdsReceiver
); // );
} // }
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */ // /* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
/* -------------------------------------------------------- | 缺票登记 */ // /* -------------------------------------------------------- | 缺票登记 */
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponBack(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponBack(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponBack2(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponBack2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponBack3(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponBack3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
/* -------------------------------------------------------- | */ // /* -------------------------------------------------------- | */
} //}
package com.liquidnet.service.consumer.kylin.config; //package com.liquidnet.service.consumer.kylin.config;
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver; //import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponOrderBackRdsReceiver; //import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponOrderBackRdsReceiver;
import lombok.var; //import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer; //import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord; //import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset; //import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset; //import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer; //import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription; //import org.springframework.data.redis.stream.Subscription;
//
import java.time.Duration; //import java.time.Duration;
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_BACK; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_BACK;
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_ORDER_BACK; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_ORDER_BACK;
//
//
@Configuration //@Configuration
public class ConsumerCandyCouponOrderBackRedisStreamConfig { //public class ConsumerCandyCouponOrderBackRedisStreamConfig {
@Autowired // @Autowired
ConsumerCandyCouponOrderBackRdsReceiver consumerCandyCouponOrderBackRdsReceiver; // ConsumerCandyCouponOrderBackRdsReceiver consumerCandyCouponOrderBackRdsReceiver;
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) { // private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer // var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions // .StreamMessageListenerContainerOptions
.builder() // .builder()
.pollTimeout(Duration.ofMillis(1)) // .pollTimeout(Duration.ofMillis(1))
.build(); // .build();
return StreamMessageListenerContainer.create(factory, options); // return StreamMessageListenerContainer.create(factory, options);
} // }
//
/** // /**
* 缺票登记 // * 缺票登记
* // *
* @param listenerContainer // * @param listenerContainer
* @param t // * @param t
* @return // * @return
*/ // */
private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) { // private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck( // return listenerContainer.receiveAutoAck(
Consumer.from(COUPON_ORDER_BACK.getGroup(), COUPON_ORDER_BACK.name() + t), // Consumer.from(COUPON_ORDER_BACK.getGroup(), COUPON_ORDER_BACK.name() + t),
StreamOffset.create(COUPON_ORDER_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponOrderBackRdsReceiver // StreamOffset.create(COUPON_ORDER_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponOrderBackRdsReceiver
); // );
} // }
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */ // /* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
/* -------------------------------------------------------- | 缺票登记 */ // /* -------------------------------------------------------- | 缺票登记 */
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponOrderBack(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponOrderBack(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponOrderBack2(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponOrderBack2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponOrderBack3(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponOrderBack3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1); // var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
/* -------------------------------------------------------- | */ // /* -------------------------------------------------------- | */
} //}
package com.liquidnet.service.consumer.kylin.config; //package com.liquidnet.service.consumer.kylin.config;
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponReceiveRdsReceiver; //import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponReceiveRdsReceiver;
import lombok.var; //import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer; //import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord; //import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset; //import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset; //import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer; //import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription; //import org.springframework.data.redis.stream.Subscription;
//
import java.time.Duration; //import java.time.Duration;
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_RECEIVE; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_RECEIVE;
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_USE; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_USE;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_USER_INSERT_DRAW; //import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_USER_INSERT_DRAW;
//
@Configuration //@Configuration
public class ConsumerCandyCouponReceiveRedisStreamConfig { //public class ConsumerCandyCouponReceiveRedisStreamConfig {
@Autowired // @Autowired
ConsumerCandyCouponReceiveRdsReceiver consumerCandyCouponReceiveRdsReceiver; // ConsumerCandyCouponReceiveRdsReceiver consumerCandyCouponReceiveRdsReceiver;
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) { // private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer // var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions // .StreamMessageListenerContainerOptions
.builder() // .builder()
.pollTimeout(Duration.ofMillis(1)) // .pollTimeout(Duration.ofMillis(1))
.build(); // .build();
return StreamMessageListenerContainer.create(factory, options); // return StreamMessageListenerContainer.create(factory, options);
} // }
//
/** // /**
* 缺票登记 // * 缺票登记
* // *
* @param listenerContainer // * @param listenerContainer
* @param t // * @param t
* @return // * @return
*/ // */
private Subscription receiveSqlCandyCouponReceive(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) { // private Subscription receiveSqlCandyCouponReceive(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck( // return listenerContainer.receiveAutoAck(
Consumer.from(COUPON_RECEIVE.getGroup(), COUPON_RECEIVE.name() + t), // Consumer.from(COUPON_RECEIVE.getGroup(), COUPON_RECEIVE.name() + t),
StreamOffset.create(COUPON_RECEIVE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponReceiveRdsReceiver // StreamOffset.create(COUPON_RECEIVE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponReceiveRdsReceiver
); // );
} // }
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */ // /* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
/* -------------------------------------------------------- | 缺票登记 */ // /* -------------------------------------------------------- | 缺票登记 */
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponReceive(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponReceive(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1); // var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponReceive2(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponReceive2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1); // var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponReceive3(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponReceive3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1); // var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
/* -------------------------------------------------------- | */ // /* -------------------------------------------------------- | */
} //}
package com.liquidnet.service.consumer.kylin.config; //package com.liquidnet.service.consumer.kylin.config;
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver; //import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver;
import lombok.var; //import lombok.var;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer; //import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord; //import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset; //import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset; //import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer; //import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription; //import org.springframework.data.redis.stream.Subscription;
//
import java.time.Duration; //import java.time.Duration;
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_USE; //import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_USE;
//
@Configuration //@Configuration
public class ConsumerCandyCouponUseRedisStreamConfig { //public class ConsumerCandyCouponUseRedisStreamConfig {
@Autowired // @Autowired
ConsumerCandyCouponUseRdsReceiver consumerCandyCouponUseRdsReceiver; // ConsumerCandyCouponUseRdsReceiver consumerCandyCouponUseRdsReceiver;
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) { // private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer // var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions // .StreamMessageListenerContainerOptions
.builder() // .builder()
.pollTimeout(Duration.ofMillis(1)) // .pollTimeout(Duration.ofMillis(1))
.build(); // .build();
return StreamMessageListenerContainer.create(factory, options); // return StreamMessageListenerContainer.create(factory, options);
} // }
//
/** // /**
* 缺票登记 // * 缺票登记
* // *
* @param listenerContainer // * @param listenerContainer
* @param t // * @param t
* @return // * @return
*/ // */
private Subscription receiveSqlCandyCouponUse(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) { // private Subscription receiveSqlCandyCouponUse(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck( // return listenerContainer.receiveAutoAck(
Consumer.from(COUPON_USE.getGroup(), COUPON_USE.name() + t), // Consumer.from(COUPON_USE.getGroup(), COUPON_USE.name() + t),
StreamOffset.create(COUPON_USE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponUseRdsReceiver // StreamOffset.create(COUPON_USE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponUseRdsReceiver
); // );
} // }
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */ // /* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
/* -------------------------------------------------------- | 缺票登记 */ // /* -------------------------------------------------------- | 缺票登记 */
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponUse(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponUse(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1); // var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponUse2(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponUse2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1); // var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
@Bean // @Bean
public Subscription subscriptionSqlCandyCouponUse3(RedisConnectionFactory factory) { // public Subscription subscriptionSqlCandyCouponUse3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory); // var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1); // var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
listenerContainer.start(); // listenerContainer.start();
return subscription; // return subscription;
} // }
//
/* -------------------------------------------------------- | */ // /* -------------------------------------------------------- | */
} //}
package com.liquidnet.service.consumer.kylin.receiver; //package com.liquidnet.service.consumer.kylin.receiver;
//
import com.liquidnet.common.cache.redis.util.RedisUtil; //import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; //import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; //import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.OrderCloseMapping; //import com.liquidnet.service.base.OrderCloseMapping;
import com.liquidnet.service.candy.constant.CandyRedisConst; //import com.liquidnet.service.candy.constant.CandyRedisConst;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto; //import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import lombok.extern.slf4j.Slf4j; //import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord; //import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords; //import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate; //import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener; //import org.springframework.data.redis.stream.StreamListener;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.HashMap; //import java.util.HashMap;
import java.util.List; //import java.util.List;
//
@Slf4j //@Slf4j
public abstract class AbstractCouponOrderBackRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> { //public abstract class AbstractCouponOrderBackRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired // @Autowired
StringRedisTemplate stringRedisTemplate; // StringRedisTemplate stringRedisTemplate;
@Autowired // @Autowired
private RedisUtil redisUtil; // private RedisUtil redisUtil;
//
@Override // @Override
public void onMessage(MapRecord<String, String, String> message) { // public void onMessage(MapRecord<String, String, String> message) {
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]", // log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue()); // this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
//
boolean result = this.consumerSqlOperationCouponOrderBackHandler(message.getValue().get("message")); // boolean result = this.consumerSqlOperationCouponOrderBackHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId()); // log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
//
try { // try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message); // stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId()); // stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) { // } catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e); // log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally { // } finally {
try { // try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message); // stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId()); // stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception ignored) { // } catch (Exception ignored) {
} // }
} // }
} // }
//
private boolean consumerSqlOperationCouponOrderBackHandler(String msg) { // private boolean consumerSqlOperationCouponOrderBackHandler(String msg) {
boolean aBoolean = false; // boolean aBoolean = false;
try { // try {
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class); // OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
//
//这里是 uCouponId和uid 懒。所以没新写方法 // //这里是 uCouponId和uid 懒。所以没新写方法
for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) { // for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
String t = mqMessage.getOrderTicketIds().get(x); // String t = mqMessage.getOrderTicketIds().get(x);
String uCouponId = t.split(",")[0]; // String uCouponId = t.split(",")[0];
String uid = t.split(",")[1]; // String uid = t.split(",")[1];
ArrayList<String> uCouponIdList = CollectionUtil.arrayListString(); // ArrayList<String> uCouponIdList = CollectionUtil.arrayListString();
uCouponIdList.add(uCouponId); // uCouponIdList.add(uCouponId);
List<CandyUserCouponBasicDto> dtoList = backCoupon(getCouponByUid(uid), uCouponIdList); // List<CandyUserCouponBasicDto> dtoList = backCoupon(getCouponByUid(uid), uCouponIdList);
setCouponByUid(uid, dtoList); // setCouponByUid(uid, dtoList);
} // }
//
aBoolean = true; // aBoolean = true;
} catch (Exception e) { // } catch (Exception e) {
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e); // log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally { // } finally {
if (!aBoolean) { // if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString(); // HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg); // map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey())); // stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
} // }
} // }
return aBoolean; // return aBoolean;
} // }
//
private List<CandyUserCouponBasicDto> getCouponByUid(String uid) { // private List<CandyUserCouponBasicDto> getCouponByUid(String uid) {
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid); // String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
Object obj = redisUtil.get(redisKey); // Object obj = redisUtil.get(redisKey);
if (obj == null) { // if (obj == null) {
//降级 // //降级
return new ArrayList(); // return new ArrayList();
} else { // } else {
return (List<CandyUserCouponBasicDto>) obj; // return (List<CandyUserCouponBasicDto>) obj;
} // }
} // }
//
// 覆盖 CandyUserCouponBasicDto数组 根据用户id // // 覆盖 CandyUserCouponBasicDto数组 根据用户id
private void setCouponByUid(String uid, List<CandyUserCouponBasicDto> dtoList) { // private void setCouponByUid(String uid, List<CandyUserCouponBasicDto> dtoList) {
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid); // String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
redisUtil.set(redisKey, dtoList); // redisUtil.set(redisKey, dtoList);
} // }
//
/** // /**
* 回退券 // * 回退券
* // *
* @param dtoList CouponBaseDtoList // * @param dtoList CouponBaseDtoList
* @param uCouponIdList 券唯一id list // * @param uCouponIdList 券唯一id list
* @return List<CandyUserCouponBasicDto> // * @return List<CandyUserCouponBasicDto>
*/ // */
private List<CandyUserCouponBasicDto> backCoupon(List<CandyUserCouponBasicDto> dtoList, ArrayList<String> uCouponIdList) { // private List<CandyUserCouponBasicDto> backCoupon(List<CandyUserCouponBasicDto> dtoList, ArrayList<String> uCouponIdList) {
boolean isHas = false; // boolean isHas = false;
for (CandyUserCouponBasicDto dtoItem : dtoList) { // for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (uCouponIdList.contains(dtoItem.getUcouponId())) { // if (uCouponIdList.contains(dtoItem.getUcouponId())) {
if (dtoItem.getState().equals(5)) { // if (dtoItem.getState().equals(5)) {
dtoItem.setState(1); // dtoItem.setState(1);
isHas = true;//券存在 // isHas = true;//券存在
} else { // } else {
} // }
} // }
} // }
if (!isHas) { // if (!isHas) {
return null;//券不存在 // return null;//券不存在
} // }
return dtoList; // return dtoList;
} // }
//
protected abstract String getRedisStreamKey(); // protected abstract String getRedisStreamKey();
//
protected abstract String getRedisStreamGroup(); // protected abstract String getRedisStreamGroup();
} //}
package com.liquidnet.service.consumer.kylin.receiver; //package com.liquidnet.service.consumer.kylin.receiver;
//
import com.liquidnet.service.base.constant.MQConst; //import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
@Component //@Component
public class ConsumerCandyCouponBackRdsReceiver extends AbstractSqlRedisReceiver { //public class ConsumerCandyCouponBackRdsReceiver extends AbstractSqlRedisReceiver {
@Override // @Override
protected String getRedisStreamKey() { // protected String getRedisStreamKey() {
return MQConst.CandyQueue.COUPON_BACK.getKey(); // return MQConst.CandyQueue.COUPON_BACK.getKey();
} // }
//
@Override // @Override
protected String getRedisStreamGroup() { // protected String getRedisStreamGroup() {
return MQConst.CandyQueue.COUPON_BACK.getGroup(); // return MQConst.CandyQueue.COUPON_BACK.getGroup();
} // }
} //}
package com.liquidnet.service.consumer.kylin.receiver; //package com.liquidnet.service.consumer.kylin.receiver;
//
import com.liquidnet.service.base.constant.MQConst; //import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
@Component //@Component
public class ConsumerCandyCouponOrderBackRdsReceiver extends AbstractCouponOrderBackRedisReceiver { //public class ConsumerCandyCouponOrderBackRdsReceiver extends AbstractCouponOrderBackRedisReceiver {
@Override // @Override
protected String getRedisStreamKey() { // protected String getRedisStreamKey() {
return MQConst.CandyQueue.COUPON_ORDER_BACK.getKey(); // return MQConst.CandyQueue.COUPON_ORDER_BACK.getKey();
} // }
//
@Override // @Override
protected String getRedisStreamGroup() { // protected String getRedisStreamGroup() {
return MQConst.CandyQueue.COUPON_ORDER_BACK.getGroup(); // return MQConst.CandyQueue.COUPON_ORDER_BACK.getGroup();
} // }
} //}
package com.liquidnet.service.consumer.kylin.receiver; //package com.liquidnet.service.consumer.kylin.receiver;
//
import com.liquidnet.service.base.constant.MQConst; //import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
@Component //@Component
public class ConsumerCandyCouponReceiveRdsReceiver extends AbstractSqlRedisReceiver { //public class ConsumerCandyCouponReceiveRdsReceiver extends AbstractSqlRedisReceiver {
@Override // @Override
protected String getRedisStreamKey() { // protected String getRedisStreamKey() {
return MQConst.CandyQueue.COUPON_RECEIVE.getKey(); // return MQConst.CandyQueue.COUPON_RECEIVE.getKey();
} // }
//
@Override // @Override
protected String getRedisStreamGroup() { // protected String getRedisStreamGroup() {
return MQConst.CandyQueue.COUPON_RECEIVE.getGroup(); // return MQConst.CandyQueue.COUPON_RECEIVE.getGroup();
} // }
} //}
package com.liquidnet.service.consumer.kylin.receiver; //package com.liquidnet.service.consumer.kylin.receiver;
//
import com.liquidnet.service.base.constant.MQConst; //import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
//
@Component //@Component
public class ConsumerCandyCouponUseRdsReceiver extends AbstractSqlRedisReceiver { //public class ConsumerCandyCouponUseRdsReceiver extends AbstractSqlRedisReceiver {
@Override // @Override
protected String getRedisStreamKey() { // protected String getRedisStreamKey() {
return MQConst.CandyQueue.COUPON_USE.getKey(); // return MQConst.CandyQueue.COUPON_USE.getKey();
} // }
//
@Override // @Override
protected String getRedisStreamGroup() { // protected String getRedisStreamGroup() {
return MQConst.CandyQueue.COUPON_USE.getGroup(); // return MQConst.CandyQueue.COUPON_USE.getGroup();
} // }
} //}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment