记得上下班打卡 | 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
be62c0a2
Commit
be62c0a2
authored
Jun 06, 2022
by
胡佳晨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
消费迁移 xls相关 转赠订单定时过期 批量空投二维码 提交
parent
98c887bf
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
472 additions
and
303 deletions
+472
-303
ConsumerGoblinPhoneCodeStreamConfig.java
...umer/base/config/ConsumerGoblinPhoneCodeStreamConfig.java
+45
-0
AbstractHttpRedisReceiver.java
...ice/consumer/base/receiver/AbstractHttpRedisReceiver.java
+103
-0
ConsumerGoblinPhoneCodeReceiver.java
...nsumer/base/receiver/ConsumerGoblinPhoneCodeReceiver.java
+21
-0
AbstractHttpRedisReceiver.java
...ce/consumer/kylin/receiver/AbstractHttpRedisReceiver.java
+103
-103
ConsumerGoblinPhoneCodeReceiver.java
...sumer/kylin/receiver/ConsumerGoblinPhoneCodeReceiver.java
+21
-21
ConsumerGoblinPhoneCodeStreamConfig.java
...er/slowly/config/ConsumerGoblinPhoneCodeStreamConfig.java
+55
-55
AbstractHttpRedisReceiver.java
...e/consumer/slowly/receiver/AbstractHttpRedisReceiver.java
+103
-103
ConsumerGoblinPhoneCodeReceiver.java
...umer/slowly/receiver/ConsumerGoblinPhoneCodeReceiver.java
+21
-21
No files found.
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-base/src/main/java/com/liquidnet/service/consumer/base/config/ConsumerGoblinPhoneCodeStreamConfig.java
0 → 100644
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
base
.
config
;
import
com.liquidnet.common.cache.redis.config.RedisStreamConfig
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.consumer.base.receiver.ConsumerGoblinPhoneCodeReceiver
;
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.core.StringRedisTemplate
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.util.ArrayList
;
import
java.util.List
;
@Configuration
public
class
ConsumerGoblinPhoneCodeStreamConfig
extends
RedisStreamConfig
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
ConsumerGoblinPhoneCodeReceiver
consumerGoblinPhoneCodeReceiver
;
//批量空投
@Bean
public
List
<
Subscription
>
subscriptionPhoneCodeExamine
(
RedisConnectionFactory
factory
)
{
List
<
Subscription
>
subscriptionList
=
new
ArrayList
<>();
MQConst
.
GoblinQueue
stream
=
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
;
this
.
initStream
(
stringRedisTemplate
,
stream
.
getKey
(),
stream
.
getGroup
());
for
(
int
i
=
0
;
i
<
1
;
i
++)
{
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
subscriptionList
.
add
(
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
stream
.
getGroup
(),
getConsumerName
(
stream
.
name
()
+
i
)),
StreamOffset
.
create
(
stream
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerGoblinPhoneCodeReceiver
));
listenerContainer
.
start
();
}
return
subscriptionList
;
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-base/src/main/java/com/liquidnet/service/consumer/base/receiver/AbstractHttpRedisReceiver.java
0 → 100644
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
base
.
receiver
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
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
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.util.*
;
@Slf4j
public
abstract
class
AbstractHttpRedisReceiver
implements
StreamListener
<
String
,
MapRecord
<
String
,
String
,
String
>>
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Value
(
"${liquidnet.service.order.url}"
)
private
String
orderUrl
;
@Override
public
void
onMessage
(
MapRecord
<
String
,
String
,
String
>
message
)
{
String
redisStreamKey
=
this
.
getRedisStreamKey
();
log
.
debug
(
"CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]"
,
redisStreamKey
,
message
.
getId
(),
message
.
getStream
(),
message
.
getValue
());
boolean
result
=
this
.
consumerMessageHandler
(
message
.
getValue
());
log
.
info
(
"CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}"
,
result
,
redisStreamKey
,
message
.
getId
());
try
{
stringRedisTemplate
.
opsForStream
().
acknowledge
(
getRedisStreamGroup
(),
message
);
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
try
{
stringRedisTemplate
.
opsForStream
().
delete
(
redisStreamKey
,
message
.
getId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
}
private
boolean
consumerMessageHandler
(
Map
<
String
,
String
>
message
)
{
try
{
String
codestr
=
message
.
get
(
"codes"
);
String
userIds
=
message
.
get
(
"userIds"
);
String
phonestr
=
message
.
get
(
"phones"
);
String
adminUid
=
message
.
get
(
"adminUid"
);
List
<
String
>
codeList
=
Arrays
.
asList
(
codestr
.
split
(
","
));
List
<
String
>
userIdList
=
Arrays
.
asList
(
userIds
.
split
(
","
));
List
<
String
>
phoneList
=
Arrays
.
asList
(
phonestr
.
split
(
","
));
LinkedList
<
Object
[]>
addLink
=
CollectionUtil
.
linkedListObjectArr
();
for
(
int
i
=
0
;
i
<
userIdList
.
size
();
i
++)
{
MultiValueMap
<
String
,
String
>
params
=
new
LinkedMultiValueMap
();
params
.
add
(
"code"
,
codeList
.
get
(
i
));
params
.
add
(
"userId"
,
userIdList
.
get
(
i
));
MultiValueMap
<
String
,
String
>
headers
=
CollectionUtil
.
linkedMultiValueMapStringString
();
headers
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
post
=
HttpUtil
.
post
(
orderUrl
+
"/order/goblin/nft/airdrop"
,
params
,
headers
);
ResponseDto
<
Boolean
>
rsp
=
JsonUtils
.
fromJson
(
post
,
new
TypeReference
<
ResponseDto
<
Boolean
>>()
{
});
if
(
rsp
.
isSuccess
())
{
addLink
.
add
(
new
Object
[]{
adminUid
,
codeList
.
get
(
i
)});
}
else
{
log
.
error
(
"airdrop send fail:[{}]"
+
phoneList
.
get
(
i
));
}
}
if
(
addLink
!=
null
&&
!
addLink
.
isEmpty
())
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_activity.code.admin"
));
String
sqlData
=
SqlMapping
.
gets
(
sqls
,
addLink
);
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_CODE_OPERA
.
getKey
(),
sqlData
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"airdrop send fail:[{}]"
);
}
return
true
;
}
public
void
sendMsgByRedis
(
String
streamKey
,
String
jsonMsg
)
{
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
MQConst
.
QUEUE_MESSAGE_KEY
,
jsonMsg
);
stringRedisTemplate
.
opsForStream
().
add
(
StreamRecords
.
mapBacked
(
map
).
withStreamKey
(
streamKey
));
}
protected
abstract
String
getRedisStreamKey
();
protected
abstract
String
getRedisStreamGroup
();
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-base/src/main/java/com/liquidnet/service/consumer/base/receiver/ConsumerGoblinPhoneCodeReceiver.java
0 → 100644
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
base
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
ConsumerGoblinPhoneCodeReceiver
extends
AbstractHttpRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getGroup
();
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-kylin/src/main/java/com/liquidnet/service/consumer/kylin/receiver/AbstractHttpRedisReceiver.java
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
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
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.util.*
;
@Slf4j
public
abstract
class
AbstractHttpRedisReceiver
implements
StreamListener
<
String
,
MapRecord
<
String
,
String
,
String
>>
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Value
(
"${liquidnet.service.order.url}"
)
private
String
orderUrl
;
@Override
public
void
onMessage
(
MapRecord
<
String
,
String
,
String
>
message
)
{
String
redisStreamKey
=
this
.
getRedisStreamKey
();
log
.
debug
(
"CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]"
,
redisStreamKey
,
message
.
getId
(),
message
.
getStream
(),
message
.
getValue
());
boolean
result
=
this
.
consumerMessageHandler
(
message
.
getValue
());
log
.
info
(
"CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}"
,
result
,
redisStreamKey
,
message
.
getId
());
try
{
stringRedisTemplate
.
opsForStream
().
acknowledge
(
getRedisStreamGroup
(),
message
);
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
try
{
stringRedisTemplate
.
opsForStream
().
delete
(
redisStreamKey
,
message
.
getId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
}
private
boolean
consumerMessageHandler
(
Map
<
String
,
String
>
message
)
{
try
{
String
codestr
=
message
.
get
(
"codes"
);
String
userIds
=
message
.
get
(
"userIds"
);
String
phonestr
=
message
.
get
(
"phones"
);
String
adminUid
=
message
.
get
(
"adminUid"
);
List
<
String
>
codeList
=
Arrays
.
asList
(
codestr
.
split
(
","
));
List
<
String
>
userIdList
=
Arrays
.
asList
(
userIds
.
split
(
","
));
List
<
String
>
phoneList
=
Arrays
.
asList
(
phonestr
.
split
(
","
));
LinkedList
<
Object
[]>
addLink
=
CollectionUtil
.
linkedListObjectArr
();
for
(
int
i
=
0
;
i
<
userIdList
.
size
();
i
++)
{
MultiValueMap
<
String
,
String
>
params
=
new
LinkedMultiValueMap
();
params
.
add
(
"code"
,
codeList
.
get
(
i
));
params
.
add
(
"userId"
,
userIdList
.
get
(
i
));
MultiValueMap
<
String
,
String
>
headers
=
CollectionUtil
.
linkedMultiValueMapStringString
();
headers
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
post
=
HttpUtil
.
post
(
orderUrl
+
"/order/goblin/nft/airdrop"
,
params
,
headers
);
ResponseDto
<
Boolean
>
rsp
=
JsonUtils
.
fromJson
(
post
,
new
TypeReference
<
ResponseDto
<
Boolean
>>()
{
});
if
(
rsp
.
isSuccess
())
{
addLink
.
add
(
new
Object
[]{
adminUid
,
codeList
.
get
(
i
)});
}
else
{
log
.
error
(
"airdrop send fail:[{}]"
+
phoneList
.
get
(
i
));
}
}
if
(
addLink
!=
null
&&
!
addLink
.
isEmpty
())
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_activity.code.admin"
));
String
sqlData
=
SqlMapping
.
gets
(
sqls
,
addLink
);
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_CODE_OPERA
.
getKey
(),
sqlData
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"airdrop send fail:[{}]"
);
}
return
true
;
}
public
void
sendMsgByRedis
(
String
streamKey
,
String
jsonMsg
)
{
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
MQConst
.
QUEUE_MESSAGE_KEY
,
jsonMsg
);
stringRedisTemplate
.
opsForStream
().
add
(
StreamRecords
.
mapBacked
(
map
).
withStreamKey
(
streamKey
));
}
protected
abstract
String
getRedisStreamKey
();
protected
abstract
String
getRedisStreamGroup
();
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.fasterxml.jackson.core.type.TypeReference;
//
import com.liquidnet.commons.lang.util.CollectionUtil;
//
import com.liquidnet.commons.lang.util.HttpUtil;
//
import com.liquidnet.commons.lang.util.JsonUtils;
//
import com.liquidnet.service.base.ResponseDto;
//
import com.liquidnet.service.base.SqlMapping;
//
import com.liquidnet.service.base.constant.MQConst;
//
import lombok.extern.slf4j.Slf4j;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.beans.factory.annotation.Value;
//
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 org.springframework.util.LinkedMultiValueMap;
//
import org.springframework.util.MultiValueMap;
//
//
import java.util.*;
//
//
@Slf4j
//
public abstract class AbstractHttpRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
//
//
@Autowired
//
StringRedisTemplate stringRedisTemplate;
//
//
@Value("${liquidnet.service.order.url}")
//
private String orderUrl;
//
//
@Override
//
public void onMessage(MapRecord<String, String, String> message) {
//
String redisStreamKey = this.getRedisStreamKey();
//
log.debug("CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]", redisStreamKey, message.getId(), message.getStream(), message.getValue());
//
boolean result = this.consumerMessageHandler(message.getValue());
//
log.info("CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}", result, redisStreamKey, message.getId());
//
//
try {
//
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
//
} catch (Exception e) {
//
log.error("#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
//
}
//
try {
//
stringRedisTemplate.opsForStream().delete(redisStreamKey, message.getId());
//
} catch (Exception e) {
//
log.error("#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
//
}
//
}
//
//
private boolean consumerMessageHandler(Map<String, String> message) {
//
try {
//
String codestr = message.get("codes");
//
String userIds = message.get("userIds");
//
String phonestr = message.get("phones");
//
String adminUid = message.get("adminUid");
//
List<String> codeList = Arrays.asList(codestr.split(","));
//
List<String> userIdList = Arrays.asList(userIds.split(","));
//
List<String> phoneList = Arrays.asList(phonestr.split(","));
//
LinkedList<Object[]> addLink = CollectionUtil.linkedListObjectArr();
//
for (int i = 0; i < userIdList.size(); i++) {
//
MultiValueMap<String, String> params = new LinkedMultiValueMap();
//
params.add("code", codeList.get(i));
//
params.add("userId", userIdList.get(i));
//
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
//
headers.add("Accept", "application/json;charset=UTF-8");
//
String post = HttpUtil.post(orderUrl + "/order/goblin/nft/airdrop", params, headers);
//
ResponseDto<Boolean> rsp = JsonUtils.fromJson(post, new TypeReference<ResponseDto<Boolean>>() {
//
});
//
if (rsp.isSuccess()) {
//
addLink.add(new Object[]{adminUid, codeList.get(i)});
//
} else {
//
log.error("airdrop send fail:[{}]" + phoneList.get(i));
//
}
//
}
//
//
if (addLink != null && !addLink.isEmpty()) {
//
LinkedList<String> sqls = CollectionUtil.linkedListString();
//
sqls.add(SqlMapping.get("goblin_activity.code.admin"));
//
String sqlData = SqlMapping.gets(sqls, addLink);
//
sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_CODE_OPERA.getKey(), sqlData);
//
}
//
//
} catch (Exception e) {
//
log.error("airdrop send fail:[{}]");
//
}
//
//
return true;
//
}
//
//
//
public void sendMsgByRedis(String streamKey, String jsonMsg) {
//
HashMap<String, String> map = CollectionUtil.mapStringString();
//
map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg);
//
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
//
}
//
//
//
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/ConsumerGoblinPhoneCodeReceiver.java
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
kylin
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
ConsumerGoblinPhoneCodeReceiver
extends
AbstractHttpRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.kylin.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import lombok.extern.slf4j.Slf4j;
//
import org.springframework.stereotype.Component;
//
//
@Slf4j
//
@Component
//
public class ConsumerGoblinPhoneCodeReceiver extends AbstractHttpRedisReceiver {
//
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getGroup();
//
}
//
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-slowly/src/main/java/com/liquidnet/service/consumer/slowly/config/ConsumerGoblinPhoneCodeStreamConfig.java
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
slowly
.
config
;
import
com.liquidnet.common.cache.redis.config.RedisStreamConfig
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.consumer.slowly.receiver.ConsumerGoblinPhoneCodeReceiver
;
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.core.StringRedisTemplate
;
import
org.springframework.data.redis.stream.StreamMessageListenerContainer
;
import
org.springframework.data.redis.stream.Subscription
;
import
java.util.ArrayList
;
import
java.util.List
;
@Configuration
public
class
ConsumerGoblinPhoneCodeStreamConfig
extends
RedisStreamConfig
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
ConsumerGoblinPhoneCodeReceiver
consumerGoblinPhoneCodeReceiver
;
// public Subscription receivePhoneCodeExamine(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
// return listenerContainer.receiveAutoAck(Consumer.from(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getGroup(), getConsumerName(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.name() + t)),
// StreamOffset.create(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey(), ReadOffset.lastConsumed()), consumerGoblinPhoneCodeReceiver);
// }
//package com.liquidnet.service.consumer.slowly.config;
//
//import com.liquidnet.common.cache.redis.config.RedisStreamConfig;
//import com.liquidnet.service.base.constant.MQConst;
//import com.liquidnet.service.consumer.slowly.receiver.ConsumerGoblinPhoneCodeReceiver;
//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.core.StringRedisTemplate;
//import org.springframework.data.redis.stream.StreamMessageListenerContainer;
//import org.springframework.data.redis.stream.Subscription;
//
//import java.util.ArrayList;
//import java.util.List;
//
// @Bean
// public Subscription phoneCodeExamine0(RedisConnectionFactory factory) {
// var listenerContainer = this.buildStreamMessageListenerContainer(factory);
// var subscription = receivePhoneCodeExamine(listenerContainer, 0);
// listenerContainer.start();
// return subscription;
//@Configuration
//public class ConsumerGoblinPhoneCodeStreamConfig extends RedisStreamConfig {
// @Autowired
// StringRedisTemplate stringRedisTemplate;
// @Autowired
// ConsumerGoblinPhoneCodeReceiver consumerGoblinPhoneCodeReceiver;
//
//// public Subscription receivePhoneCodeExamine(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
//// return listenerContainer.receiveAutoAck(Consumer.from(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getGroup(), getConsumerName(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.name() + t)),
//// StreamOffset.create(MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey(), ReadOffset.lastConsumed()), consumerGoblinPhoneCodeReceiver);
//// }
////
//// @Bean
//// public Subscription phoneCodeExamine0(RedisConnectionFactory factory) {
//// var listenerContainer = this.buildStreamMessageListenerContainer(factory);
//// var subscription = receivePhoneCodeExamine(listenerContainer, 0);
//// listenerContainer.start();
//// return subscription;
//// }
//
// @Bean//
// public List<Subscription> subscriptionPhoneCodeExamine(RedisConnectionFactory factory) {
// List<Subscription> subscriptionList = new ArrayList<>();
// MQConst.GoblinQueue stream = MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA;
// this.initStream(stringRedisTemplate, stream.getKey(), stream.getGroup());
// for (int i = 0; i < 1; i++) {
// StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer = this.buildStreamMessageListenerContainer(factory);
// subscriptionList.add(listenerContainer.receiveAutoAck(
// Consumer.from(stream.getGroup(), getConsumerName(stream.name() + i)),
// StreamOffset.create(stream.getKey(), ReadOffset.lastConsumed()), consumerGoblinPhoneCodeReceiver
// ));
// listenerContainer.start();
// }
// return subscriptionList;
// }
@Bean
//
public
List
<
Subscription
>
subscriptionPhoneCodeExamine
(
RedisConnectionFactory
factory
)
{
List
<
Subscription
>
subscriptionList
=
new
ArrayList
<>();
MQConst
.
GoblinQueue
stream
=
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
;
this
.
initStream
(
stringRedisTemplate
,
stream
.
getKey
(),
stream
.
getGroup
());
for
(
int
i
=
0
;
i
<
1
;
i
++)
{
StreamMessageListenerContainer
<
String
,
MapRecord
<
String
,
String
,
String
>>
listenerContainer
=
this
.
buildStreamMessageListenerContainer
(
factory
);
subscriptionList
.
add
(
listenerContainer
.
receiveAutoAck
(
Consumer
.
from
(
stream
.
getGroup
(),
getConsumerName
(
stream
.
name
()
+
i
)),
StreamOffset
.
create
(
stream
.
getKey
(),
ReadOffset
.
lastConsumed
()),
consumerGoblinPhoneCodeReceiver
));
listenerContainer
.
start
();
}
return
subscriptionList
;
}
}
//
//}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-slowly/src/main/java/com/liquidnet/service/consumer/slowly/receiver/AbstractHttpRedisReceiver.java
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
slowly
.
receiver
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
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
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.util.*
;
@Slf4j
public
abstract
class
AbstractHttpRedisReceiver
implements
StreamListener
<
String
,
MapRecord
<
String
,
String
,
String
>>
{
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Value
(
"${liquidnet.service.order.url}"
)
private
String
orderUrl
;
@Override
public
void
onMessage
(
MapRecord
<
String
,
String
,
String
>
message
)
{
String
redisStreamKey
=
this
.
getRedisStreamKey
();
log
.
debug
(
"CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]"
,
redisStreamKey
,
message
.
getId
(),
message
.
getStream
(),
message
.
getValue
());
boolean
result
=
this
.
consumerMessageHandler
(
message
.
getValue
());
log
.
info
(
"CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}"
,
result
,
redisStreamKey
,
message
.
getId
());
try
{
stringRedisTemplate
.
opsForStream
().
acknowledge
(
getRedisStreamGroup
(),
message
);
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
try
{
stringRedisTemplate
.
opsForStream
().
delete
(
redisStreamKey
,
message
.
getId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}"
,
redisStreamKey
,
result
,
message
.
getValue
(),
e
);
}
}
private
boolean
consumerMessageHandler
(
Map
<
String
,
String
>
message
)
{
try
{
String
codestr
=
message
.
get
(
"codes"
);
String
userIds
=
message
.
get
(
"userIds"
);
String
phonestr
=
message
.
get
(
"phones"
);
String
adminUid
=
message
.
get
(
"adminUid"
);
List
<
String
>
codeList
=
Arrays
.
asList
(
codestr
.
split
(
","
));
List
<
String
>
userIdList
=
Arrays
.
asList
(
userIds
.
split
(
","
));
List
<
String
>
phoneList
=
Arrays
.
asList
(
phonestr
.
split
(
","
));
LinkedList
<
Object
[]>
addLink
=
CollectionUtil
.
linkedListObjectArr
();
for
(
int
i
=
0
;
i
<
userIdList
.
size
();
i
++)
{
MultiValueMap
<
String
,
String
>
params
=
new
LinkedMultiValueMap
();
params
.
add
(
"code"
,
codeList
.
get
(
i
));
params
.
add
(
"userId"
,
userIdList
.
get
(
i
));
MultiValueMap
<
String
,
String
>
headers
=
CollectionUtil
.
linkedMultiValueMapStringString
();
headers
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
post
=
HttpUtil
.
post
(
orderUrl
+
"/order/goblin/nft/airdrop"
,
params
,
headers
);
ResponseDto
<
Boolean
>
rsp
=
JsonUtils
.
fromJson
(
post
,
new
TypeReference
<
ResponseDto
<
Boolean
>>()
{
});
if
(
rsp
.
isSuccess
())
{
addLink
.
add
(
new
Object
[]{
adminUid
,
codeList
.
get
(
i
)});
}
else
{
log
.
error
(
"airdrop send fail:[{}]"
+
phoneList
.
get
(
i
));
}
}
if
(
addLink
!=
null
&&
!
addLink
.
isEmpty
())
{
LinkedList
<
String
>
sqls
=
CollectionUtil
.
linkedListString
();
sqls
.
add
(
SqlMapping
.
get
(
"goblin_activity.code.admin"
));
String
sqlData
=
SqlMapping
.
gets
(
sqls
,
addLink
);
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
GOBLIN_CODE_OPERA
.
getKey
(),
sqlData
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"airdrop send fail:[{}]"
);
}
return
true
;
}
public
void
sendMsgByRedis
(
String
streamKey
,
String
jsonMsg
)
{
HashMap
<
String
,
String
>
map
=
CollectionUtil
.
mapStringString
();
map
.
put
(
MQConst
.
QUEUE_MESSAGE_KEY
,
jsonMsg
);
stringRedisTemplate
.
opsForStream
().
add
(
StreamRecords
.
mapBacked
(
map
).
withStreamKey
(
streamKey
));
}
protected
abstract
String
getRedisStreamKey
();
protected
abstract
String
getRedisStreamGroup
();
}
//
package com.liquidnet.service.consumer.slowly.receiver;
//
//
import com.fasterxml.jackson.core.type.TypeReference;
//
import com.liquidnet.commons.lang.util.CollectionUtil;
//
import com.liquidnet.commons.lang.util.HttpUtil;
//
import com.liquidnet.commons.lang.util.JsonUtils;
//
import com.liquidnet.service.base.ResponseDto;
//
import com.liquidnet.service.base.SqlMapping;
//
import com.liquidnet.service.base.constant.MQConst;
//
import lombok.extern.slf4j.Slf4j;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.beans.factory.annotation.Value;
//
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 org.springframework.util.LinkedMultiValueMap;
//
import org.springframework.util.MultiValueMap;
//
//
import java.util.*;
//
//
@Slf4j
//
public abstract class AbstractHttpRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
//
//
@Autowired
//
StringRedisTemplate stringRedisTemplate;
//
//
@Value("${liquidnet.service.order.url}")
//
private String orderUrl;
//
//
@Override
//
public void onMessage(MapRecord<String, String, String> message) {
//
String redisStreamKey = this.getRedisStreamKey();
//
log.debug("CONSUMER MSG[streamKey:{},messageId:{},stream:{},body:{}]", redisStreamKey, message.getId(), message.getStream(), message.getValue());
//
boolean result = this.consumerMessageHandler(message.getValue());
//
log.info("CONSUMER MSG RESULT:{} ==> [{}]MESSAGE_ID:{}", result, redisStreamKey, message.getId());
//
//
try {
//
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
//
} catch (Exception e) {
//
log.error("#CONSUMER MSG EX_ACK ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
//
}
//
try {
//
stringRedisTemplate.opsForStream().delete(redisStreamKey, message.getId());
//
} catch (Exception e) {
//
log.error("#CONSUMER MSG EX_DEL ==> [{}]RESULT:{},MESSAGE:{}", redisStreamKey, result, message.getValue(), e);
//
}
//
}
//
//
private boolean consumerMessageHandler(Map<String, String> message) {
//
try {
//
String codestr = message.get("codes");
//
String userIds = message.get("userIds");
//
String phonestr = message.get("phones");
//
String adminUid = message.get("adminUid");
//
List<String> codeList = Arrays.asList(codestr.split(","));
//
List<String> userIdList = Arrays.asList(userIds.split(","));
//
List<String> phoneList = Arrays.asList(phonestr.split(","));
//
LinkedList<Object[]> addLink = CollectionUtil.linkedListObjectArr();
//
for (int i = 0; i < userIdList.size(); i++) {
//
MultiValueMap<String, String> params = new LinkedMultiValueMap();
//
params.add("code", codeList.get(i));
//
params.add("userId", userIdList.get(i));
//
MultiValueMap<String, String> headers = CollectionUtil.linkedMultiValueMapStringString();
//
headers.add("Accept", "application/json;charset=UTF-8");
//
String post = HttpUtil.post(orderUrl + "/order/goblin/nft/airdrop", params, headers);
//
ResponseDto<Boolean> rsp = JsonUtils.fromJson(post, new TypeReference<ResponseDto<Boolean>>() {
//
});
//
if (rsp.isSuccess()) {
//
addLink.add(new Object[]{adminUid, codeList.get(i)});
//
} else {
//
log.error("airdrop send fail:[{}]" + phoneList.get(i));
//
}
//
}
//
//
if (addLink != null && !addLink.isEmpty()) {
//
LinkedList<String> sqls = CollectionUtil.linkedListString();
//
sqls.add(SqlMapping.get("goblin_activity.code.admin"));
//
String sqlData = SqlMapping.gets(sqls, addLink);
//
sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_CODE_OPERA.getKey(), sqlData);
//
}
//
//
} catch (Exception e) {
//
log.error("airdrop send fail:[{}]");
//
}
//
//
return true;
//
}
//
//
//
public void sendMsgByRedis(String streamKey, String jsonMsg) {
//
HashMap<String, String> map = CollectionUtil.mapStringString();
//
map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg);
//
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
//
}
//
//
//
protected abstract String getRedisStreamKey();
//
//
protected abstract String getRedisStreamGroup();
//
//
//
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-slowly/src/main/java/com/liquidnet/service/consumer/slowly/receiver/ConsumerGoblinPhoneCodeReceiver.java
View file @
be62c0a2
package
com
.
liquidnet
.
service
.
consumer
.
slowly
.
receiver
;
import
com.liquidnet.service.base.constant.MQConst
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
ConsumerGoblinPhoneCodeReceiver
extends
AbstractHttpRedisReceiver
{
@Override
protected
String
getRedisStreamKey
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getKey
();
}
@Override
protected
String
getRedisStreamGroup
()
{
return
MQConst
.
GoblinQueue
.
GOBLIN_PHONE_CODE_OPERA
.
getGroup
();
}
}
//
package com.liquidnet.service.consumer.slowly.receiver;
//
//
import com.liquidnet.service.base.constant.MQConst;
//
import lombok.extern.slf4j.Slf4j;
//
import org.springframework.stereotype.Component;
//
//
@Slf4j
//
@Component
//
public class ConsumerGoblinPhoneCodeReceiver extends AbstractHttpRedisReceiver {
//
//
@Override
//
protected String getRedisStreamKey() {
//
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.getKey();
//
}
//
//
@Override
//
protected String getRedisStreamGroup() {
//
return MQConst.GoblinQueue.GOBLIN_PHONE_CODE_OPERA.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