1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package vc.thinker.forwardthinker.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import vc.thinker.absctacts.mqtt.topic.TopicDefinition;
import vc.thinker.absctacts.mqtt.utils.StringFormatUtils;
import vc.thinker.forwardthinker.actor.up.ThirdPartyReportDataActor;
import vc.thinker.utils.Resolve;
/**
* Topic-actor 定义
*
* @author HeTongHao
* @since 2022-06-28 16:00
*/
@Getter
@AllArgsConstructor
public enum FoxGatewayTopicDefinition implements TopicDefinition {
/**
* Topic-actor 定义
*/
report("third-party/+/up/report", ThirdPartyReportDataActor.class),
report_version("third-party/+/v2/up/report", ThirdPartyReportDataActor.class),
;
private final String topic;
private final Class<?> actorClass;
public static final Resolve<FoxGatewayTopicDefinition, String> RESOLVE_BY_TOPIC = new Resolve<>(values(), FoxGatewayTopicDefinition::getTopic);
public String getActorInstanceName() {
return StringFormatUtils.classNameLowercaseFirst(this.actorClass);
}
public String genTopic(String protocolCode) {
return this.topic.replace("+", protocolCode);
}
/**
* 根据topic解析第三方协议编号
*
* @param topic topic
* @return 第三方协议编号
*/
public static String resolveProtocolCodeByTopic(String topic) {
return topic.split("/")[1];
}
}