记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
da6cf45a
Commit
da6cf45a
authored
Oct 27, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consumer.kylin删除candy相关消费逻辑;
parent
cfbef2dc
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
504 additions
and
504 deletions
+504
-504
ConsumerCandyCouponBackRedisStreamConfig.java
...ylin/config/ConsumerCandyCouponBackRedisStreamConfig.java
+78
-78
ConsumerCandyCouponOrderBackRedisStreamConfig.java
...config/ConsumerCandyCouponOrderBackRedisStreamConfig.java
+80
-80
ConsumerCandyCouponReceiveRedisStreamConfig.java
...n/config/ConsumerCandyCouponReceiveRedisStreamConfig.java
+79
-79
ConsumerCandyCouponUseRedisStreamConfig.java
...kylin/config/ConsumerCandyCouponUseRedisStreamConfig.java
+77
-77
AbstractCouponOrderBackRedisReceiver.java
.../kylin/receiver/AbstractCouponOrderBackRedisReceiver.java
+122
-122
ConsumerCandyCouponBackRdsReceiver.java
...er/kylin/receiver/ConsumerCandyCouponBackRdsReceiver.java
+17
-17
ConsumerCandyCouponOrderBackRdsReceiver.java
...lin/receiver/ConsumerCandyCouponOrderBackRdsReceiver.java
+17
-17
ConsumerCandyCouponReceiveRdsReceiver.java
...kylin/receiver/ConsumerCandyCouponReceiveRdsReceiver.java
+17
-17
ConsumerCandyCouponUseRdsReceiver.java
...mer/kylin/receiver/ConsumerCandyCouponUseRdsReceiver.java
+17
-17
No files found.
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponBackRedisStreamConfig.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
CandyQueue
.
COUPON_BACK
;
@Configuration
public
class
ConsumerCandyCouponBackRedisStreamConfig
{
@Autowired
ConsumerCandyCouponBackRdsReceiver
consumerCandyCouponBackRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponBack
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
COUPON_BACK
.
getGroup
(),
COUPON_BACK
.
name
()
+
t
),
StreamOffset
.
create
(
COUPON_BACK
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponBackRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponBack
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponBack2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponBack3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
//
package com.liquidnet.service.consumer.kylin.config;
//
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver;
//
import lombok.var;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.context.annotation.Bean;
//
import org.springframework.context.annotation.Configuration;
//
import org.springframework.data.redis.connection.RedisConnectionFactory;
//
import org.springframework.data.redis.connection.stream.Consumer;
//
import org.springframework.data.redis.connection.stream.MapRecord;
//
import org.springframework.data.redis.connection.stream.ReadOffset;
//
import org.springframework.data.redis.connection.stream.StreamOffset;
//
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
//
import org.springframework.data.redis.stream.Subscription;
//
//
import java.time.Duration;
//
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_BACK;
//
//
//
@Configuration
//
public class ConsumerCandyCouponBackRedisStreamConfig {
//
@Autowired
//
ConsumerCandyCouponBackRdsReceiver consumerCandyCouponBackRdsReceiver;
//
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
//
var options = StreamMessageListenerContainer
//
.StreamMessageListenerContainerOptions
//
.builder()
//
.pollTimeout(Duration.ofMillis(1))
//
.build();
//
return StreamMessageListenerContainer.create(factory, options);
//
}
//
//
/**
//
* 缺票登记
//
*
//
* @param listenerContainer
//
* @param t
//
* @return
//
*/
//
private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
//
return listenerContainer.receiveAutoAck(
//
Consumer.from(COUPON_BACK.getGroup(), COUPON_BACK.name() + t),
//
StreamOffset.create(COUPON_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponBackRdsReceiver
//
);
//
}
//
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
//
/* -------------------------------------------------------- | 缺票登记 */
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponBack(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponBack2(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponBack3(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
/* -------------------------------------------------------- | */
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponOrderBackRedisStreamConfig.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponOrderBackRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
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_ORDER_BACK
;
@Configuration
public
class
ConsumerCandyCouponOrderBackRedisStreamConfig
{
@Autowired
ConsumerCandyCouponOrderBackRdsReceiver
consumerCandyCouponOrderBackRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponBack
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
COUPON_ORDER_BACK
.
getGroup
(),
COUPON_ORDER_BACK
.
name
()
+
t
),
StreamOffset
.
create
(
COUPON_ORDER_BACK
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponOrderBackRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponOrderBack
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponOrderBack2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponOrderBack3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponBack
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
//
package com.liquidnet.service.consumer.kylin.config;
//
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponBackRdsReceiver;
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponOrderBackRdsReceiver;
//
import lombok.var;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.context.annotation.Bean;
//
import org.springframework.context.annotation.Configuration;
//
import org.springframework.data.redis.connection.RedisConnectionFactory;
//
import org.springframework.data.redis.connection.stream.Consumer;
//
import org.springframework.data.redis.connection.stream.MapRecord;
//
import org.springframework.data.redis.connection.stream.ReadOffset;
//
import org.springframework.data.redis.connection.stream.StreamOffset;
//
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
//
import org.springframework.data.redis.stream.Subscription;
//
//
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_ORDER_BACK;
//
//
//
@Configuration
//
public class ConsumerCandyCouponOrderBackRedisStreamConfig {
//
@Autowired
//
ConsumerCandyCouponOrderBackRdsReceiver consumerCandyCouponOrderBackRdsReceiver;
//
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
//
var options = StreamMessageListenerContainer
//
.StreamMessageListenerContainerOptions
//
.builder()
//
.pollTimeout(Duration.ofMillis(1))
//
.build();
//
return StreamMessageListenerContainer.create(factory, options);
//
}
//
//
/**
//
* 缺票登记
//
*
//
* @param listenerContainer
//
* @param t
//
* @return
//
*/
//
private Subscription receiveSqlCandyCouponBack(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
//
return listenerContainer.receiveAutoAck(
//
Consumer.from(COUPON_ORDER_BACK.getGroup(), COUPON_ORDER_BACK.name() + t),
//
StreamOffset.create(COUPON_ORDER_BACK.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponOrderBackRdsReceiver
//
);
//
}
//
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
//
/* -------------------------------------------------------- | 缺票登记 */
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponOrderBack(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponOrderBack2(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponOrderBack3(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponBack(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
/* -------------------------------------------------------- | */
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponReceiveRedisStreamConfig.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponReceiveRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
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_USE
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
SweetQueue
.
SWEET_USER_INSERT_DRAW
;
@Configuration
public
class
ConsumerCandyCouponReceiveRedisStreamConfig
{
@Autowired
ConsumerCandyCouponReceiveRdsReceiver
consumerCandyCouponReceiveRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponReceive
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
COUPON_RECEIVE
.
getGroup
(),
COUPON_RECEIVE
.
name
()
+
t
),
StreamOffset
.
create
(
COUPON_RECEIVE
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponReceiveRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponReceive
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponReceive2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponReceive3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponReceive
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
//
package com.liquidnet.service.consumer.kylin.config;
//
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponReceiveRdsReceiver;
//
import lombok.var;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.context.annotation.Bean;
//
import org.springframework.context.annotation.Configuration;
//
import org.springframework.data.redis.connection.RedisConnectionFactory;
//
import org.springframework.data.redis.connection.stream.Consumer;
//
import org.springframework.data.redis.connection.stream.MapRecord;
//
import org.springframework.data.redis.connection.stream.ReadOffset;
//
import org.springframework.data.redis.connection.stream.StreamOffset;
//
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
//
import org.springframework.data.redis.stream.Subscription;
//
//
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_USE;
//
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_USER_INSERT_DRAW;
//
//
@Configuration
//
public class ConsumerCandyCouponReceiveRedisStreamConfig {
//
@Autowired
//
ConsumerCandyCouponReceiveRdsReceiver consumerCandyCouponReceiveRdsReceiver;
//
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
//
var options = StreamMessageListenerContainer
//
.StreamMessageListenerContainerOptions
//
.builder()
//
.pollTimeout(Duration.ofMillis(1))
//
.build();
//
return StreamMessageListenerContainer.create(factory, options);
//
}
//
//
/**
//
* 缺票登记
//
*
//
* @param listenerContainer
//
* @param t
//
* @return
//
*/
//
private Subscription receiveSqlCandyCouponReceive(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
//
return listenerContainer.receiveAutoAck(
//
Consumer.from(COUPON_RECEIVE.getGroup(), COUPON_RECEIVE.name() + t),
//
StreamOffset.create(COUPON_RECEIVE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponReceiveRdsReceiver
//
);
//
}
//
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
//
/* -------------------------------------------------------- | 缺票登记 */
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponReceive(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponReceive2(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponReceive3(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponReceive(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
/* -------------------------------------------------------- | */
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/config/ConsumerCandyCouponUseRedisStreamConfig.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
config
;
import
com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver
;
import
lombok.var
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.connection.stream.Consumer
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.ReadOffset
;
import
org.springframework.data.redis.connection.stream.StreamOffset
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.time.Duration
;
import
static
com
.
liquidnet
.
service
.
base
.
constant
.
MQConst
.
CandyQueue
.
COUPON_USE
;
@Configuration
public
class
ConsumerCandyCouponUseRedisStreamConfig
{
@Autowired
ConsumerCandyCouponUseRdsReceiver
consumerCandyCouponUseRdsReceiver
;
private
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
buildStreamMessageListenerContainer
(
RedisConnectionFactory
factory
)
{
var
options
=
StreamMessageListenerContainer
.
StreamMessageListenerContainerOptions
.
builder
()
.
pollTimeout
(
Duration
.
ofMillis
(
1
))
.
build
();
return
StreamMessageListenerContainer
.
create
(
factory
,
options
);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private
Subscription
receiveSqlCandyCouponUse
(
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
,
int
t
)
{
return
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
COUPON_USE
.
getGroup
(),
COUPON_USE
.
name
()
+
t
),
StreamOffset
.
create
(
COUPON_USE
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerCandyCouponUseRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public
Subscription
subscriptionSqlCandyCouponUse
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponUse2
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
@Bean
public
Subscription
subscriptionSqlCandyCouponUse3
(
RedisConnectionFactory
factory
)
{
var
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
var
subscription
=
receiveSqlCandyCouponUse
(
listenerContainer
,
1
);
listenerContainer
.
start
();
return
subscription
;
}
/* -------------------------------------------------------- | */
}
//
package com.liquidnet.service.consumer.kylin.config;
//
//
import com.liquidnet.service.consumer.kylin.receiver.ConsumerCandyCouponUseRdsReceiver;
//
import lombok.var;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.context.annotation.Bean;
//
import org.springframework.context.annotation.Configuration;
//
import org.springframework.data.redis.connection.RedisConnectionFactory;
//
import org.springframework.data.redis.connection.stream.Consumer;
//
import org.springframework.data.redis.connection.stream.MapRecord;
//
import org.springframework.data.redis.connection.stream.ReadOffset;
//
import org.springframework.data.redis.connection.stream.StreamOffset;
//
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
//
import org.springframework.data.redis.stream.Subscription;
//
//
import java.time.Duration;
//
//
import static com.liquidnet.service.base.constant.MQConst.CandyQueue.COUPON_USE;
//
//
@Configuration
//
public class ConsumerCandyCouponUseRedisStreamConfig {
//
@Autowired
//
ConsumerCandyCouponUseRdsReceiver consumerCandyCouponUseRdsReceiver;
//
//
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
//
var options = StreamMessageListenerContainer
//
.StreamMessageListenerContainerOptions
//
.builder()
//
.pollTimeout(Duration.ofMillis(1))
//
.build();
//
return StreamMessageListenerContainer.create(factory, options);
//
}
//
//
/**
//
* 缺票登记
//
*
//
* @param listenerContainer
//
* @param t
//
* @return
//
*/
//
private Subscription receiveSqlCandyCouponUse(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
//
return listenerContainer.receiveAutoAck(
//
Consumer.from(COUPON_USE.getGroup(), COUPON_USE.name() + t),
//
StreamOffset.create(COUPON_USE.getKey(), ReadOffset.lastConsumed()), consumerCandyCouponUseRdsReceiver
//
);
//
}
//
//
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
//
//
/* -------------------------------------------------------- | 缺票登记 */
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponUse(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponUse2(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
@Bean
//
public Subscription subscriptionSqlCandyCouponUse3(RedisConnectionFactory factory) {
//
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//
var subscription = receiveSqlCandyCouponUse(listenerContainer, 1);
//
listenerContainer.start();
//
return subscription;
//
}
//
//
/* -------------------------------------------------------- | */
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/AbstractCouponOrderBackRedisReceiver.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.OrderCloseMapping
;
import
com.liquidnet.service.candy.constant.CandyRedisConst
;
import
com.liquidnet.service.candy.dto.CandyUserCouponBasicDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.connection.stream.MapRecord
;
import
org.springframework.data.redis.connection.stream.StreamRecords
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.stream.StreamListener
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
@Slf4j
public
abstract
class
AbstractCouponOrderBackRedisReceiver
implements
StreamListener
<
String
,
MapRecord
<
String
,
String
,
String
>>
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
RedisUtil
redisUtil
;
@Override
public
void
onMessage
(
MapRecord
<
String
,
String
,
String
>
message
)
{
log
.
debug
(
"CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]"
,
this
.
getRedisStreamKey
(),
message
.
getId
(),
message
.
getStream
(),
message
.
getValue
());
boolean
result
=
this
.
consumerSqlOperationCouponOrderBackHandler
(
message
.
getValue
().
get
(
"message"
));
log
.
info
(
"CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}"
,
result
,
message
.
getId
());
try
{
stringRedisTemplate
.
opsForStream
().
acknowledge
(
getRedisStreamGroup
(),
message
);
stringRedisTemplate
.
opsForStream
().
delete
(
this
.
getRedisStreamKey
(),
message
.
getId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]"
,
result
,
message
.
getId
(),
JsonUtils
.
toJson
(
message
),
e
);
}
finally
{
try
{
stringRedisTemplate
.
opsForStream
().
acknowledge
(
getRedisStreamGroup
(),
message
);
stringRedisTemplate
.
opsForStream
().
delete
(
this
.
getRedisStreamKey
(),
message
.
getId
());
}
catch
(
Exception
ignored
)
{
}
}
}
private
boolean
consumerSqlOperationCouponOrderBackHandler
(
String
msg
)
{
boolean
aBoolean
=
false
;
try
{
OrderCloseMapping
.
orderCloseMessage
mqMessage
=
JsonUtils
.
fromJson
(
msg
,
OrderCloseMapping
.
orderCloseMessage
.
class
);
//这里是 uCouponId和uid 懒。所以没新写方法
for
(
int
x
=
0
;
x
<
mqMessage
.
getOrderTicketIds
().
size
();
x
++)
{
String
t
=
mqMessage
.
getOrderTicketIds
().
get
(
x
);
String
uCouponId
=
t
.
split
(
","
)[
0
];
String
uid
=
t
.
split
(
","
)[
1
];
ArrayList
<
String
>
uCouponIdList
=
CollectionUtil
.
arrayListString
();
uCouponIdList
.
add
(
uCouponId
);
List
<
CandyUserCouponBasicDto
>
dtoList
=
backCoupon
(
getCouponByUid
(
uid
),
uCouponIdList
);
setCouponByUid
(
uid
,
dtoList
);
}
aBoolean
=
true
;
}
catch
(
Exception
e
)
{
log
.
error
(
"CONSUMER SQL FAIL ==> {}"
,
e
.
getMessage
(),
e
);
}
finally
{
if
(!
aBoolean
)
{
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
"message"
,
msg
);
stringRedisTemplate
.
opsForStream
().
add
(
StreamRecords
.
mapBacked
(
map
).
withStreamKey
(
this
.
getRedisStreamKey
()));
}
}
return
aBoolean
;
}
private
List
<
CandyUserCouponBasicDto
>
getCouponByUid
(
String
uid
)
{
String
redisKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
uid
);
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
obj
==
null
)
{
//降级
return
new
ArrayList
();
}
else
{
return
(
List
<
CandyUserCouponBasicDto
>)
obj
;
}
}
// 覆盖 CandyUserCouponBasicDto数组 根据用户id
private
void
setCouponByUid
(
String
uid
,
List
<
CandyUserCouponBasicDto
>
dtoList
)
{
String
redisKey
=
CandyRedisConst
.
BASIC_USER_COUPON
.
concat
(
uid
);
redisUtil
.
set
(
redisKey
,
dtoList
);
}
/**
* 回退券
*
* @param dtoList CouponBaseDtoList
* @param uCouponIdList 券唯一id list
* @return List<CandyUserCouponBasicDto>
*/
private
List
<
CandyUserCouponBasicDto
>
backCoupon
(
List
<
CandyUserCouponBasicDto
>
dtoList
,
ArrayList
<
String
>
uCouponIdList
)
{
boolean
isHas
=
false
;
for
(
CandyUserCouponBasicDto
dtoItem
:
dtoList
)
{
if
(
uCouponIdList
.
contains
(
dtoItem
.
getUcouponId
()))
{
if
(
dtoItem
.
getState
().
equals
(
5
))
{
dtoItem
.
setState
(
1
);
isHas
=
true
;
//券存在
}
else
{
}
}
}
if
(!
isHas
)
{
return
null
;
//券不存在
}
return
dtoList
;
}
protected
abstract
String
getRedisStreamKey
();
protected
abstract
String
getRedisStreamGroup
();
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.common.cache.redis.util.RedisUtil;
//
import com.liquidnet.commons.lang.util.CollectionUtil;
//
import com.liquidnet.commons.lang.util.JsonUtils;
//
import com.liquidnet.service.base.OrderCloseMapping;
//
import com.liquidnet.service.candy.constant.CandyRedisConst;
//
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
//
import lombok.extern.slf4j.Slf4j;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.data.redis.connection.stream.MapRecord;
//
import org.springframework.data.redis.connection.stream.StreamRecords;
//
import org.springframework.data.redis.core.StringRedisTemplate;
//
import org.springframework.data.redis.stream.StreamListener;
//
//
import java.util.ArrayList;
//
import java.util.HashMap;
//
import java.util.List;
//
//
@Slf4j
//
public abstract class AbstractCouponOrderBackRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
//
@Autowired
//
StringRedisTemplate stringRedisTemplate;
//
@Autowired
//
private RedisUtil redisUtil;
//
//
@Override
//
public void onMessage(MapRecord<String, String, String> message) {
//
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
//
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
//
//
boolean result = this.consumerSqlOperationCouponOrderBackHandler(message.getValue().get("message"));
//
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
//
//
try {
//
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
//
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
//
} catch (Exception e) {
//
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
//
} finally {
//
try {
//
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
//
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
//
} catch (Exception ignored) {
//
}
//
}
//
}
//
//
private boolean consumerSqlOperationCouponOrderBackHandler(String msg) {
//
boolean aBoolean = false;
//
try {
//
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(msg, OrderCloseMapping.orderCloseMessage.class);
//
//
//这里是 uCouponId和uid 懒。所以没新写方法
//
for (int x = 0; x < mqMessage.getOrderTicketIds().size(); x++) {
//
String t = mqMessage.getOrderTicketIds().get(x);
//
String uCouponId = t.split(",")[0];
//
String uid = t.split(",")[1];
//
ArrayList<String> uCouponIdList = CollectionUtil.arrayListString();
//
uCouponIdList.add(uCouponId);
//
List<CandyUserCouponBasicDto> dtoList = backCoupon(getCouponByUid(uid), uCouponIdList);
//
setCouponByUid(uid, dtoList);
//
}
//
//
aBoolean = true;
//
} catch (Exception e) {
//
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
//
} finally {
//
if (!aBoolean) {
//
HashMap<String, String> map = CollectionUtil.mapStringString();
//
map.put("message", msg);
//
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
//
}
//
}
//
return aBoolean;
//
}
//
//
private List<CandyUserCouponBasicDto> getCouponByUid(String uid) {
//
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
//
Object obj = redisUtil.get(redisKey);
//
if (obj == null) {
//
//降级
//
return new ArrayList();
//
} else {
//
return (List<CandyUserCouponBasicDto>) obj;
//
}
//
}
//
//
// 覆盖 CandyUserCouponBasicDto数组 根据用户id
//
private void setCouponByUid(String uid, List<CandyUserCouponBasicDto> dtoList) {
//
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
//
redisUtil.set(redisKey, dtoList);
//
}
//
//
/**
//
* 回退券
//
*
//
* @param dtoList CouponBaseDtoList
//
* @param uCouponIdList 券唯一id list
//
* @return List<CandyUserCouponBasicDto>
//
*/
//
private List<CandyUserCouponBasicDto> backCoupon(List<CandyUserCouponBasicDto> dtoList, ArrayList<String> uCouponIdList) {
//
boolean isHas = false;
//
for (CandyUserCouponBasicDto dtoItem : dtoList) {
//
if (uCouponIdList.contains(dtoItem.getUcouponId())) {
//
if (dtoItem.getState().equals(5)) {
//
dtoItem.setState(1);
//
isHas = true;//券存在
//
} else {
//
}
//
}
//
}
//
if (!isHas) {
//
return null;//券不存在
//
}
//
return dtoList;
//
}
//
//
protected abstract String getRedisStreamKey();
//
//
protected abstract String getRedisStreamGroup();
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponBackRdsReceiver.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponBackRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_BACK
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_BACK
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import org.springframework.stereotype.Component;
//
//
@Component
//
public class ConsumerCandyCouponBackRdsReceiver extends AbstractSqlRedisReceiver {
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.CandyQueue.COUPON_BACK.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.CandyQueue.COUPON_BACK.getGroup();
//
}
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponOrderBackRdsReceiver.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponOrderBackRdsReceiver
extends
AbstractCouponOrderBackRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_ORDER_BACK
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_ORDER_BACK
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import org.springframework.stereotype.Component;
//
//
@Component
//
public class ConsumerCandyCouponOrderBackRdsReceiver extends AbstractCouponOrderBackRedisReceiver {
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.CandyQueue.COUPON_ORDER_BACK.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.CandyQueue.COUPON_ORDER_BACK.getGroup();
//
}
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponReceiveRdsReceiver.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponReceiveRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_RECEIVE
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_RECEIVE
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import org.springframework.stereotype.Component;
//
//
@Component
//
public class ConsumerCandyCouponReceiveRdsReceiver extends AbstractSqlRedisReceiver {
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.CandyQueue.COUPON_RECEIVE.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.CandyQueue.COUPON_RECEIVE.getGroup();
//
}
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/ConsumerCandyCouponUseRdsReceiver.java
View file @
da6cf45a
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
org.springframework.stereotype.Component
;
@Component
public
class
ConsumerCandyCouponUseRdsReceiver
extends
AbstractSqlRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
CandyQueue
.
COUPON_USE
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
CandyQueue
.
COUPON_USE
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import org.springframework.stereotype.Component;
//
//
@Component
//
public class ConsumerCandyCouponUseRdsReceiver extends AbstractSqlRedisReceiver {
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.CandyQueue.COUPON_USE.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.CandyQueue.COUPON_USE.getGroup();
//
}
//
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment