diff --git a/go-push-common/src/main/java/com/gopush/common/constants/DeviceEnum.java b/go-push-common/src/main/java/com/gopush/common/constants/DeviceMessageEnum.java similarity index 54% rename from go-push-common/src/main/java/com/gopush/common/constants/DeviceEnum.java rename to go-push-common/src/main/java/com/gopush/common/constants/DeviceMessageEnum.java index 0f667bc9008aaa1676e25bb88f4c9130877cb9cd..192f14c66a8644d6a03c4e6f1c0571ffca720b75 100644 --- a/go-push-common/src/main/java/com/gopush/common/constants/DeviceEnum.java +++ b/go-push-common/src/main/java/com/gopush/common/constants/DeviceMessageEnum.java @@ -1,8 +1,8 @@ package com.gopush.common.constants; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/14 上午12:14 */ -public enum DeviceEnum { +public enum DeviceMessageEnum { } diff --git a/go-push-common/src/main/java/com/gopush/common/constants/HandshakeEnum.java b/go-push-common/src/main/java/com/gopush/common/constants/HandshakeEnum.java index 12d1c9006bf1d9f3faf4b9a5ebf0cf2d219a374b..0192a3478993fb03e49af8d8ba34ff74800ed414 100644 --- a/go-push-common/src/main/java/com/gopush/common/constants/HandshakeEnum.java +++ b/go-push-common/src/main/java/com/gopush/common/constants/HandshakeEnum.java @@ -5,7 +5,7 @@ import lombok.Getter; import java.util.Arrays; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/14 上午12:05 */ @Getter @@ -13,19 +13,19 @@ public enum HandshakeEnum { HANDSAHKE_OK(200,"握手成功"), HANDSHAKE_INVALID_DEVICE(300,"非法设备"), HANDSHAKE_INVALID_TOKEN(301,"非法Token"); - private int value; + private int key; private String descri; - HandshakeEnum(int value, String descri){ - this.value = value; + HandshakeEnum(int key, String descri){ + this.key = key; this.descri = descri; } - public static HandshakeEnum fromValue(int value) { - if (value <= 0) { + public static HandshakeEnum fromKey(int key) { + if (key <= 0) { return null; } return Arrays.stream(HandshakeEnum.values()) - .filter(a -> value == a.getValue()) + .filter(a -> key == a.getKey()) .findFirst() .orElse(null); } diff --git a/go-push-common/src/main/java/com/gopush/common/constants/NodeEnum.java b/go-push-common/src/main/java/com/gopush/common/constants/NodeMessageEnum.java similarity index 68% rename from go-push-common/src/main/java/com/gopush/common/constants/NodeEnum.java rename to go-push-common/src/main/java/com/gopush/common/constants/NodeMessageEnum.java index 1651622bb22f8b95d4e071e9686c69fe45e94cca..e6435d918ba0540abf1406efaa45ea5e6aab23e0 100644 --- a/go-push-common/src/main/java/com/gopush/common/constants/NodeEnum.java +++ b/go-push-common/src/main/java/com/gopush/common/constants/NodeMessageEnum.java @@ -6,11 +6,11 @@ import lombok.Getter; import java.util.Arrays; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/14 上午12:13 */ @Getter -public enum NodeEnum { +public enum NodeMessageEnum { OK(200,"OK"), FAIL(500,"FAIL") @@ -20,16 +20,16 @@ public enum NodeEnum { private int code; private String descri; - NodeEnum(int code,String descri){ + NodeMessageEnum(int code, String descri){ this.code = code; this.descri = descri; } - public static NodeEnum fromCode(int code) { + public static NodeMessageEnum fromCode(int code) { if (code <= 0) { return null; } - return Arrays.stream(NodeEnum.values()) + return Arrays.stream(NodeMessageEnum.values()) .filter(a -> code == a.getCode()) .findFirst() .orElse(null); diff --git a/go-push-common/src/main/java/com/gopush/common/constants/RestfulRespEnum.java b/go-push-common/src/main/java/com/gopush/common/constants/RestfulRespEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..205dd33d2eb9a1f313b0fd47fbf0953e15e1d5e3 --- /dev/null +++ b/go-push-common/src/main/java/com/gopush/common/constants/RestfulRespEnum.java @@ -0,0 +1,34 @@ +package com.gopush.common.constants; + +import lombok.Getter; + +import java.util.Arrays; + +/** + * @author chenxiangqi + * @date 2017/9/14 下午5:31 + */ +@Getter +public enum RestfulRespEnum { + + OK(0,"成功"); + + private int key; + private String descri; + + RestfulRespEnum(int key,String descri){ + this.key = key; + this.descri = descri; + } + + + public static RestfulRespEnum fromKey(int key) { + if (key <= 0) { + return null; + } + return Arrays.stream(RestfulRespEnum.values()) + .filter(a -> key == a.getKey()) + .findFirst() + .orElse(null); + } +} diff --git a/go-push-common/src/main/java/com/gopush/common/constants/ZkGroupEnum.java b/go-push-common/src/main/java/com/gopush/common/constants/ZkGroupEnum.java index 186f61329c85edaae8be4ab8bf9b6e21cf59f239..69e3abf8e7fd2515695634731b13922dc1dac952 100644 --- a/go-push-common/src/main/java/com/gopush/common/constants/ZkGroupEnum.java +++ b/go-push-common/src/main/java/com/gopush/common/constants/ZkGroupEnum.java @@ -5,7 +5,7 @@ import lombok.Getter; import java.util.Arrays; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 上午3:16 */ @Getter diff --git a/go-push-data-center/pom.xml b/go-push-data-center/pom.xml index 0d22f2148423aeaf22b4ae4015313da37ae90c29..82c5c751919fd91169f2084d104ffc5161e86011 100644 --- a/go-push-data-center/pom.xml +++ b/go-push-data-center/pom.xml @@ -48,12 +48,42 @@ spring-boot-starter-data-redis + + com.didispace + spring-boot-starter-swagger + + org.projectlombok lombok - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/DataCenterApplication.java b/go-push-data-center/src/main/java/com/gopush/datacenter/DataCenterApplication.java index 637c39ed66615156bb30c76f85dde1d80677d39e..d7ce2c00594acd4852d022106cce51a42ce9db62 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/DataCenterApplication.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/DataCenterApplication.java @@ -1,7 +1,9 @@ package com.gopush.datacenter; +import com.didispace.swagger.EnableSwagger2Doc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; /** * go-push @@ -11,7 +13,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @创建时间:2017/6/11 下午1:28 * @VERSION: */ - +@EnableSwagger2Doc +@EnableAsync @SpringBootApplication public class DataCenterApplication { diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/discovery/NodeServerDiscoveryService.java b/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/discovery/NodeServerDiscoveryService.java index 3dabaea77d0f87cd3f2800330174c7bb92d4282f..170d0203b2dfdc7e89936c499bb9444926bd91bc 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/discovery/NodeServerDiscoveryService.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/discovery/NodeServerDiscoveryService.java @@ -22,7 +22,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 上午3:13 */ @@ -139,7 +139,6 @@ public class NodeServerDiscoveryService { nodeServerPool.remove(key); } - } private void addNodeEvent(PathChildrenCacheEvent event) { @@ -155,9 +154,11 @@ public class NodeServerDiscoveryService { } } + + private String toKey(PathChildrenCacheEvent event){ String path = event.getData().getPath() ; - return path.substring(path.lastIndexOf("/")); + return path.substring(path.lastIndexOf("/")).replaceAll("/",""); } private NodeServerInfo toNodeServerInfo(PathChildrenCacheEvent event){ return JSON.parseObject(event.getData().getData(), NodeServerInfo.class); diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/register/DataCenterRegisterService.java b/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/register/DataCenterRegisterService.java index dc74f00da59f478c443f62f445c0d4fde900cbb6..f5b63916c5efd005b0ee89b39b75f114c44d863d 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/register/DataCenterRegisterService.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/dymic/register/DataCenterRegisterService.java @@ -17,7 +17,7 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 下午2:20 */ diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/DeviceDisconnectHandler.java b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/DeviceDisconnectHandler.java index 12bb043f318076fd2737cebd87bc6a24d91a0adf..ab67b5ecda822328032b2fe379d860d06d51845a 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/DeviceDisconnectHandler.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/DeviceDisconnectHandler.java @@ -1,7 +1,9 @@ package com.gopush.datacenter.nodes.handlers; +import com.gopush.common.constants.NodeMessageEnum; import com.gopush.nodes.handlers.INodeMessageHandler; import com.gopush.protocol.node.DeviceDisconReq; +import com.gopush.protocol.node.DeviceDisconResp; import com.gopush.protocol.node.NodeMessage; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -29,8 +31,7 @@ public class DeviceDisconnectHandler implements INodeMessageHandler @Override public void call(ChannelHandlerContext ctx, DeviceDockedReq message) { Channel channel = ctx.channel(); - + channel.writeAndFlush(DeviceDockedResp.builder().result(NodeMessageEnum.OK.getCode()).build().encode()); log.info("receive DeviceDockedReq, channel:{}", channel); } } diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/NodeInfoHandler.java b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/NodeInfoHandler.java index 2d043a7ce1fdce9b0b0b485d7d77ddaa76132142..4ecefb7674c0f1ffd7a9f5f292121c132cbc6400 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/NodeInfoHandler.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/handlers/NodeInfoHandler.java @@ -1,6 +1,6 @@ package com.gopush.datacenter.nodes.handlers; -import com.gopush.common.constants.NodeEnum; +import com.gopush.common.constants.NodeMessageEnum; import com.gopush.nodes.handlers.INodeMessageHandler; import com.gopush.protocol.node.NodeInfoReq; import com.gopush.protocol.node.NodeInfoResp; @@ -31,7 +31,7 @@ public class NodeInfoHandler implements INodeMessageHandler { @Override public void call(ChannelHandlerContext ctx, NodeInfoReq message) { Channel channel = ctx.channel(); - channel.writeAndFlush(NodeInfoResp.builder().result(NodeEnum.OK.getCode()).build().encode()); + channel.writeAndFlush(NodeInfoResp.builder().result(NodeMessageEnum.OK.getCode()).build().encode()); log.info("receive nodeInfoReq,channel:{}", channel); } } diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/ReloadNodesListener.java b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/ReloadNodesListener.java index 70a9b38010b8d8e5baaae154919d3f0da7399c2f..651bd8ce3c5e2f318d4647bb1e1330d193b7def4 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/ReloadNodesListener.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/ReloadNodesListener.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; import java.util.Map; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 下午11:09 */ @Slf4j diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/event/ReloadNodesEvent.java b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/event/ReloadNodesEvent.java index d2a49dbc3e4c6a06734f7686252139d53febe18d..ce88ce6af69e226b99eec161d1fd390cabfb7bba 100644 --- a/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/event/ReloadNodesEvent.java +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/nodes/manager/listener/event/ReloadNodesEvent.java @@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 下午11:09 */ @Data diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisDeviceController.java b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisDeviceController.java new file mode 100644 index 0000000000000000000000000000000000000000..035beb56ec2be6c2724520376f2c8032513cb98b --- /dev/null +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisDeviceController.java @@ -0,0 +1,84 @@ +package com.gopush.datacenter.restfuls.controller; + +import com.gopush.common.constants.IdleEnum; +import com.gopush.datacenter.dymic.discovery.NodeServerDiscoveryService; +import com.gopush.datacenter.restfuls.pojo.BaseResp; +import com.gopush.datacenter.restfuls.pojo.bo.Device; +import com.gopush.datacenter.restfuls.pojo.bo.LoadbanceNode; +import com.gopush.infos.nodeserver.bo.NodeServerInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * @author 喝咖啡的囊地鼠 + * @date 2017/9/14 下午3:18 + */ + +@RestController +@RequestMapping(value = "/apis/device") +@Api(tags = "设备|链接相关") +public class ApisDeviceController { + + @Autowired + private NodeServerDiscoveryService nodeServerDiscoveryService; + + @ApiOperation(value = "设备注册",notes = "注册设备(一台设备只注册一次,但是可以增加APPCode)") + @RequestMapping(value = "/register",method = RequestMethod.POST) + public ResponseEntity> register(@RequestBody Device device){ + //内部生产一个设备号给注册的设备 + //查找缓存,设置注册设备,没有设备的话注册,有的话检查appcode,没有的加入appcode 有的话直接返回已经注册的设备号 + //todo + return ResponseEntity.ok(BaseResp.ok(token())); + } + + @ApiOperation(value = "设备取消注册",notes = "取消注册设备(一台设备只注册一次)") + @RequestMapping(value = "/unregister/{deviceNo}",method = RequestMethod.DELETE) + public ResponseEntity unregister(@PathVariable("deviceNo") @ApiParam("设备号") String deviceNo){ + //查找缓存,没有设备的话直接返回,有的话 取消注册的设备,清空设备的有效期(从而导致sdk端或者服务端关闭链接) + //todo + return ResponseEntity.ok(BaseResp.ok()); + } + + @ApiOperation(value = "查询设备状态",notes = "查询设备状态") + @RequestMapping(value = "/{deviceNo}/state",method = RequestMethod.GET) + public ResponseEntity deviceState(@PathVariable("deviceNo") @ApiParam("设备号") String deviceNo) { + //查找缓存,没有设备的话直接返回,有的话 取消注册的设备,清空设备的有效期(从而导致sdk端或者服务端关闭链接) + //todo 查询设备状态 + return ResponseEntity.ok(BaseResp.ok()); + } + + + @ApiOperation(value = "设备选择链接节点",notes = "设备选择链接节点") + @RequestMapping(value = "/select",method = RequestMethod.GET) + public ResponseEntity> selectNode(){ + Map maps = new HashMap<>(nodeServerDiscoveryService.nodeServerPool()); + if (!CollectionUtils.isEmpty(maps)){ + NodeServerInfo info = maps.values().stream() + .min(Comparator.comparingInt(e -> e.getNodeLoaderInfo().getOnlineDeviceCounter())) + .get(); + return ResponseEntity.ok( + BaseResp.ok( + LoadbanceNode.builder() + .ip(info.getInternetIp()) + .port(info.getDevicePort()) + .readInterval(IdleEnum.READ_IDLE.getValue()) + .writeInterval(IdleEnum.WRITE_IDLE.getValue()) + .allInterval(IdleEnum.ALL_IDLE.getValue()) + .build() + )); + } + return ResponseEntity.ok(BaseResp.fail(400,"无可链接节点")); + } + + + private String token(){ + return UUID.randomUUID().toString().replaceAll("\\-",""); + } +} diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisPushController.java b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisPushController.java new file mode 100644 index 0000000000000000000000000000000000000000..ae01e46951c25de4c172b67a00805b949367afc9 --- /dev/null +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/controller/ApisPushController.java @@ -0,0 +1,37 @@ +package com.gopush.datacenter.restfuls.controller; + +import com.gopush.datacenter.restfuls.pojo.BaseResp; +import com.gopush.datacenter.restfuls.pojo.bo.Device; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author chenxiangqi + * @date 2017/9/14 下午10:57 + */ + + +@RestController +@RequestMapping(value = "/apis/push") +@Api(tags = "推送消息相关") +public class ApisPushController { + + @ApiOperation(value = "向单个设备推送消息",notes = "向单个设备推送消息") + @RequestMapping(value = "/one",method = RequestMethod.POST) + public ResponseEntity pushOne(@RequestBody Device device){ + //todo + return ResponseEntity.ok(BaseResp.ok()); + } + + @ApiOperation(value = "向多个设备推送消息",notes = "向多个设备推送消息") + @RequestMapping(value = "/numerous",method = RequestMethod.POST) + public ResponseEntity pushNumerous(@RequestBody Device device){ + //todo + return ResponseEntity.ok(BaseResp.ok()); + } +} diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/BaseResp.java b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/BaseResp.java new file mode 100644 index 0000000000000000000000000000000000000000..4d1755797965d47bc04ef64b52783cfb8c43f933 --- /dev/null +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/BaseResp.java @@ -0,0 +1,40 @@ +package com.gopush.datacenter.restfuls.pojo; + +import com.gopush.common.constants.RestfulRespEnum; +import lombok.*; + +/** + * @author chenxiangqi + * @date 2017/9/14 下午5:27 + */ + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@ToString +@Getter +public class BaseResp { + private Integer code; + private String description; + private T data; + + public static BaseResp ok(T data){ + return BaseResp.builder() + .data(data) + .code(RestfulRespEnum.OK.getKey()) + .description(RestfulRespEnum.OK.getDescri()) + .build(); + } + + public static BaseResp ok(){ + return ok(null); + } + + public static BaseResp fail(int failCode,String failMsg){ + return fail(failCode,failMsg,null); + } + public static BaseResp fail(int failCode,String failMsg,T data){ + return BaseResp.builder().code(failCode).description(failMsg).data(data).build(); + } +} diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/Device.java b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/Device.java new file mode 100644 index 0000000000000000000000000000000000000000..71ffaabdb37ad358e8c46f8436a861b3644ea1d3 --- /dev/null +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/Device.java @@ -0,0 +1,30 @@ +package com.gopush.datacenter.restfuls.pojo.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author chenxiangqi + * @date 2017/9/14 下午3:32 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("设备") +public class Device { + + @ApiModelProperty(value = "设备号",required = true, example = "IMEI99999") + private String deviceNo; + + @ApiModelProperty(value = "设备类型", required = true, example = "ios,android,other") + private String type; + + @ApiModelProperty(value = "应用Code",example = "com.baidu") + private String appCode; + +} diff --git a/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/LoadbanceNode.java b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/LoadbanceNode.java new file mode 100644 index 0000000000000000000000000000000000000000..c298b65c3d613aad741c4c6d949ba44a9dca54a1 --- /dev/null +++ b/go-push-data-center/src/main/java/com/gopush/datacenter/restfuls/pojo/bo/LoadbanceNode.java @@ -0,0 +1,33 @@ +package com.gopush.datacenter.restfuls.pojo.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author chenxiangqi + * @date 2017/9/14 下午10:15 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("选择节点") +public class LoadbanceNode { + @ApiModelProperty(value = "链接IP", example = "192.168.1.1") + private String ip; + + @ApiModelProperty(value = "链接PORT", example = "9999") + private int port; + @ApiModelProperty(value = "读周期", example = "10") + private int readInterval; + @ApiModelProperty(value = "写周期", example = "30") + private int writeInterval; + @ApiModelProperty(value = "读写周期", example = "50") + private int allInterval; + +} diff --git a/go-push-data-center/src/main/resources/application.yml b/go-push-data-center/src/main/resources/application.yml index 513ba5ca3f74b72bd7c90bd044726776a8a0a92b..f8d589c70d0e4aa089d39c6fd833c1a751fd9ff4 100644 --- a/go-push-data-center/src/main/resources/application.yml +++ b/go-push-data-center/src/main/resources/application.yml @@ -1,14 +1,6 @@ -go-push: - data-center: - name: dataCenter001 - zookeeper: - servers: 192.168.99.100:32768,192.168.99.100:32769,192.168.99.100:32770 - listen-namespace: nodeserver - namespace: datacenter - session-timeout: 6000 - connection-timeout: 6000 - max-retries: 1000 - retries-sleep-time: 2000 + +server: + port: 7011 spring: redis: @@ -18,6 +10,29 @@ spring: - 127.0.0.1:6379 +go-push: + data-center: + name: DataCenter-${random.int(100)} + zookeeper: + servers: 192.168.99.100:32768,192.168.99.100:32769,192.168.99.100:32770 + listen-namespace: namespace-node-server + namespace: namespace-data-center + session-timeout: 6000 + connection-timeout: 6000 + max-retries: 1000 + retries-sleep-time: 2000 -server: - port: 8031 +swagger: + title: GoPush Restful接口 + description: ${swagger.title}文档说明 + version: ${application.version} + license: GoPush 许可 + license-url: https://gitee.com/openWolf/gopush/blob/master/LICENSE + terms-of-service-url: https://gitee.com/openWolf/gopush/issues/new + contact: + name: 喝咖啡的囊地鼠 + url: https://gitee.com/openWolf/gopush + email: null_hello@qq.com + base-package: com.gopush.datacenter.restful + base-path: /** + exclude-path: /error,/ops/** \ No newline at end of file diff --git a/go-push-data-center/src/main/resources/banner.txt b/go-push-data-center/src/main/resources/banner.txt index 8fe72c367ed71f99ac2d9d232fabd91988d5d447..540da3dd52d867f259c0c7c7c69eb067ffc382c8 100644 --- a/go-push-data-center/src/main/resources/banner.txt +++ b/go-push-data-center/src/main/resources/banner.txt @@ -9,7 +9,6 @@ ${AnsiColor.BRIGHT_GREEN} |______|______|______|______|______|______|______|______|______|______|______| | | |_ |/ _ \| ___/ | | / __| '_ \ | |__| | (_) | | | |_| \__ \ | | | \_____|\___/|_| \__,_|___/_| |_| - ${AnsiColor.BRIGHT_RED} Application Version: ${application.version}${application.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} \ No newline at end of file diff --git a/go-push-monitor/src/main/resources/application-dev.yml b/go-push-monitor/src/main/resources/application-dev.yml new file mode 100644 index 0000000000000000000000000000000000000000..eeabd2b41cf82cb6cafc00d9de650d3b6d1a5317 --- /dev/null +++ b/go-push-monitor/src/main/resources/application-dev.yml @@ -0,0 +1,9 @@ + +redis: + cluster: + servers: 127.0.0.1:6379 + dockedServers: 127.0.0.1:6379 + poolSize: 40 + timeout: 5000 +server: + port: 8011 \ No newline at end of file diff --git a/go-push-monitor/src/main/resources/application-prod.yml b/go-push-monitor/src/main/resources/application-prod.yml new file mode 100644 index 0000000000000000000000000000000000000000..eeabd2b41cf82cb6cafc00d9de650d3b6d1a5317 --- /dev/null +++ b/go-push-monitor/src/main/resources/application-prod.yml @@ -0,0 +1,9 @@ + +redis: + cluster: + servers: 127.0.0.1:6379 + dockedServers: 127.0.0.1:6379 + poolSize: 40 + timeout: 5000 +server: + port: 8011 \ No newline at end of file diff --git a/go-push-monitor/src/main/resources/application-test.yml b/go-push-monitor/src/main/resources/application-test.yml new file mode 100644 index 0000000000000000000000000000000000000000..eeabd2b41cf82cb6cafc00d9de650d3b6d1a5317 --- /dev/null +++ b/go-push-monitor/src/main/resources/application-test.yml @@ -0,0 +1,9 @@ + +redis: + cluster: + servers: 127.0.0.1:6379 + dockedServers: 127.0.0.1:6379 + poolSize: 40 + timeout: 5000 +server: + port: 8011 \ No newline at end of file diff --git a/go-push-node-server/pom.xml b/go-push-node-server/pom.xml index 4abd4316cb21500d26f403c69b3c2a7cc8a981a1..7f78b1c54e01567d4c09237eb343c5aea9e258ef 100644 --- a/go-push-node-server/pom.xml +++ b/go-push-node-server/pom.xml @@ -76,4 +76,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/go-push-node-server/src/main/java/com/gopush/nodeserver/NodeServerApplication.java b/go-push-node-server/src/main/java/com/gopush/nodeserver/NodeServerApplication.java index 7c922f0eac0ed354b26b6eb4c4c7bf76a0e37870..bcb389addbbb329c176d74f9438ceddeda65548f 100644 --- a/go-push-node-server/src/main/java/com/gopush/nodeserver/NodeServerApplication.java +++ b/go-push-node-server/src/main/java/com/gopush/nodeserver/NodeServerApplication.java @@ -2,6 +2,7 @@ package com.gopush.nodeserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; /** * go-push @@ -11,6 +12,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @创建时间:2017/6/11 上午11:43 * @VERSION: */ +@EnableAsync @SpringBootApplication public class NodeServerApplication { diff --git a/go-push-node-server/src/main/java/com/gopush/nodeserver/devices/handlers/HandShakeHandler.java b/go-push-node-server/src/main/java/com/gopush/nodeserver/devices/handlers/HandShakeHandler.java index 26420e6fadeb6720e42abf7269ac8d6b2d5d6eab..878c214fd1ea8a530c83dff2abf5beca80116cc1 100644 --- a/go-push-node-server/src/main/java/com/gopush/nodeserver/devices/handlers/HandShakeHandler.java +++ b/go-push-node-server/src/main/java/com/gopush/nodeserver/devices/handlers/HandShakeHandler.java @@ -95,16 +95,16 @@ public class HandShakeHandler extends BatchProcessor implements IDevic HandShakeResp.HandShakeRespBuilder respBuilder = HandShakeResp.builder(); if (StringUtils.isEmpty(req.getDevice())) { - respBuilder.result(HandshakeEnum.HANDSHAKE_INVALID_DEVICE.getValue()); + respBuilder.result(HandshakeEnum.HANDSHAKE_INVALID_DEVICE.getKey()); } else { String token = (String) redisTemplate.opsForHash().get( RedisKeyEnum.DEVICE_KEY.getValue() + devcieId, RedisKeyEnum.DEIVCE_TOKEN_FIELD.getValue()); //所有的token 都不为空 且 两个token相等 if (StringUtils.isAnyEmpty(token, req.getToken()) || !StringUtils.equals(req.getToken(), token)) { - respBuilder.result(HandshakeEnum.HANDSHAKE_INVALID_TOKEN.getValue()); + respBuilder.result(HandshakeEnum.HANDSHAKE_INVALID_TOKEN.getKey()); } else { - respBuilder.result(HandshakeEnum.HANDSAHKE_OK.getValue()); + respBuilder.result(HandshakeEnum.HANDSAHKE_OK.getKey()); } } HandShakeResp resp = respBuilder.build(); @@ -112,7 +112,7 @@ public class HandShakeHandler extends BatchProcessor implements IDevic String respEncode = resp.encode(); //握手不成功 - if (resp.getResult() != HandshakeEnum.HANDSAHKE_OK.getValue()) { + if (resp.getResult() != HandshakeEnum.HANDSAHKE_OK.getKey()) { //将写出握手响应后关闭链接 channel.writeAndFlush(respEncode).addListener(ChannelFutureListener.CLOSE); log.info("handshake fail, channel:{}, device:{}, response:{}", channel, req.getDevice(), respEncode); diff --git a/go-push-node-server/src/main/java/com/gopush/nodeserver/dymic/discovery/DataCenterDiscoveryService.java b/go-push-node-server/src/main/java/com/gopush/nodeserver/dymic/discovery/DataCenterDiscoveryService.java index 7d9b3f78354afb560563b6fad5b8045439e67fe3..3229477ca9547b2d32764242e73e827c9d2d13df 100644 --- a/go-push-node-server/src/main/java/com/gopush/nodeserver/dymic/discovery/DataCenterDiscoveryService.java +++ b/go-push-node-server/src/main/java/com/gopush/nodeserver/dymic/discovery/DataCenterDiscoveryService.java @@ -14,7 +14,7 @@ import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; /** - * @author chenxiangqi + * @author 喝咖啡的囊地鼠 * @date 2017/9/12 上午3:13 */ diff --git a/go-push-node-server/src/main/java/com/gopush/nodeserver/nodes/handlers/MessageToMultiDeviceHandler.java b/go-push-node-server/src/main/java/com/gopush/nodeserver/nodes/handlers/MessageToMultiDeviceHandler.java index dd2d8c07d34c725e6157dd5b86330d7460d3a35d..c923035087291fc9706a68e2161dd2c0812eaaba 100644 --- a/go-push-node-server/src/main/java/com/gopush/nodeserver/nodes/handlers/MessageToMultiDeviceHandler.java +++ b/go-push-node-server/src/main/java/com/gopush/nodeserver/nodes/handlers/MessageToMultiDeviceHandler.java @@ -1,10 +1,11 @@ package com.gopush.nodeserver.nodes.handlers; +import com.gopush.common.constants.NodeMessageEnum; import com.gopush.nodes.handlers.INodeMessageHandler; import com.gopush.nodeserver.devices.senders.IPushSender; -import com.gopush.nodeserver.devices.stores.IDeviceChannelStore; import com.gopush.protocol.device.PushReq; import com.gopush.protocol.node.MessageToMultiDeviceReq; +import com.gopush.protocol.node.MessageToMultiDeviceResp; import com.gopush.protocol.node.NodeMessage; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; @@ -48,6 +49,9 @@ public class MessageToMultiDeviceHandler implements INodeMessageHandlergo-push-infos + + + dev + + dev + + + true + + + + test + + test + + + + prod + + prod + + + + @@ -109,6 +133,12 @@ ${springboot.version} + + com.didispace + spring-boot-starter-swagger + 1.1.0.RELEASE + + io.netty netty-all @@ -203,14 +233,14 @@ - - org.apache.maven.plugins - maven-surefire-plugin - 2.19.1 - - true - - + + + + + + + + @@ -229,6 +259,47 @@ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +