src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ard/utils/tcp/NettyTcpClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/logback-spring.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -18,7 +18,7 @@ * @date 2023-02-11 */ @Service @Slf4j @Slf4j(topic = "camera") public class ArdCamerasServiceImpl implements IArdCamerasService { @Resource private ArdCamerasMapper ardCamerasMapper; src/main/java/com/ard/alarm/tube/service/TubeAlarmService.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.ard.utils.DateUtils; import com.ard.utils.mqtt.MqttConsumer; import com.ard.utils.tcp.NettyTcpClient; import com.ard.utils.udp.NettyUdpServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; @@ -28,6 +29,8 @@ public class TubeAlarmService { @Resource NettyUdpServer nettyUdpServer; @Resource NettyTcpClient nettyTcpClient; @Value("${spring.netty.port}") private Integer udpPort; @Value("${spring.netty.enabled}") @@ -40,6 +43,8 @@ } nettyUdpServer.init(udpPort); log.info("UDPæå¡å·²ç»å¯å¨"); nettyTcpClient.init("112.98.126.2",1200); log.info("TCP客æ·ç«¯å·²è¿æ¥"); } @Async("alarm") src/main/java/com/ard/utils/tcp/NettyTcpClient.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.ard.utils.tcp; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; /** * @Description: * @ClassName: NettyTcpClient * @Author: åèä¹ * @Date: 2023å¹´06æ25æ¥17:00 * @Version: 1.0 **/ @EnableAsync @Component @Slf4j(topic = "radar") public class NettyTcpClient { @Async public void init(String host, Integer port) { NioEventLoopGroup group = new NioEventLoopGroup(); try { Bootstrap bootstrap = new Bootstrap(); bootstrap.group(group) .channel(NioSocketChannel.class) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new NettyTcpClientHandler()); } }); ChannelFuture future = bootstrap.connect(host, port).sync(); future.channel().closeFuture().sync(); } catch (Exception ex) { log.error("nettyTcp客æ·ç«¯åå§åå¼å¸¸:" + ex.getMessage()); } finally { group.shutdownGracefully(); } } } src/main/java/com/ard/utils/tcp/NettyTcpClientHandler.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package com.ard.utils.tcp; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; import javax.xml.bind.DatatypeConverter; /** * @Description: tcp客æ·ç«¯å¤ç * @ClassName: NettyTcpClientHandler * @Author: åèä¹ * @Date: 2023å¹´06æ25æ¥17:02 * @Version: 1.0 **/ @Slf4j public class NettyTcpClientHandler extends SimpleChannelInboundHandler<ByteBuf> { @Override protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg){ // å¤çæ¥æ¶å°çæ¶æ¯ byte[] byteArray = new byte[msg.readableBytes()]; msg.getBytes(msg.readerIndex(), byteArray); String hexString = DatatypeConverter.printHexBinary(byteArray); log.info("Received: " + hexString); } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { // å½å®¢æ·ç«¯è¿æ¥æååï¼åéæ¶æ¯ç»æå¡å¨ ByteBuf message = ctx.alloc().buffer(); message.writeBytes("Hello, Server!".getBytes()); ctx.writeAndFlush(message); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause){ // åçå¼å¸¸æ¶çå¤ç cause.printStackTrace(); ctx.close(); } } src/main/resources/logback-spring.xml
@@ -54,6 +54,28 @@ <onMismatch>DENY</onMismatch> </filter> </appender> <!--éç¨å çµæ¥è¦æ¥å¿è¾åº--> <appender name="camera" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/camera.log</file> <!--å¾ªç¯æ¿çï¼åºäºæ¶é´å建æ¥å¿æä»¶--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--æ¥å¿æä»¶åæ ¼å¼--> <fileNamePattern>${log.path}/camera.%d{yyyy-MM-dd}.log</fileNamePattern> <!--æ¥å¿æå¤§çåå²60天--> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--è¿æ»¤ç级å«--> <level>INFO</level> <!--å¹é æ¶çæä½ï¼æ¥æ¶ï¼è®°å½ï¼--> <onMatch>ACCEPT</onMatch> <!--ä¸å¹é æ¶çæä½ï¼æç»ï¼ä¸è®°å½ï¼--> <onMismatch>DENY</onMismatch> </filter> </appender> <root level="DEBUG"> <appender-ref ref="console"/> </root> @@ -65,5 +87,9 @@ <root level="INFO"> <appender-ref ref="tube"/> </root> <!--éç¨å çµæ¥è¦æä½æ¥å¿--> <root level="INFO"> <appender-ref ref="camera"/> </root> </configuration>