Procházet zdrojové kódy

云端发送数据异常捕获测试

易涛 před 3 roky
rodič
revize
6e7a60e900

+ 9 - 0
src/main/java/com/persagy/netty/client/NettyClient.java

@@ -74,6 +74,15 @@ public class NettyClient {
                     //!!!!!!注意,NettyMessage<T>是有泛型的,如果把发送一个数据,接收方必须有一个和<T>的全限定类名完全一样的实体类,
                     //发送方不应该限制接收方,所有使用JSONObject.parseObject(msg.toString(), NettyMessage.class)操作让泛型擦除掉
                     channel.writeAndFlush(JSONObject.parseObject(msg.toString(), new TypeReference<NettyMessage<JSONObject>>() {
+                    }), channel.newPromise().addListener((ChannelFutureListener) future -> {
+                        if(!future.isSuccess()){
+                            Throwable failureCause = future.cause();
+                            log.error("发送数据异常,放入缓冲队列中",failureCause);
+                            NettyMessageQueue.getNettyMessageQueue().produce(msg);
+                            log.error("数据{}放入队列成功",msg);
+                            future.channel().close();
+                            channel.close();
+                        }
                     }));
                 } catch (Exception e) {
                     log.error("发送数据异常,放入缓冲队列中", e);