前言
客户的需求真是千奇百怪
最近有个需求, 内网内有一批数据不太对, 需要通过UDP将数据发送至外网, 外网程序处理后同样也以UDP方式返回. 在此过程中需要同步阻塞, 即内网程序要一直等待外网程序的数据返回, 才进行下一步动作. (效率可想而知 -_-)
这里的设计适用于: 主线程一直循环按批获取数据, 当一批数据过来时, UDP客户端分别将其中的数据对外发送, 发送过程一直等待UDP返回, 并且此批数据全部处理完成之后, 再唤醒主线程, 去取下一批数据
这里的程序为内网程序
设计
- 由于程序不止要发送udp, 还要接受返回消息, 所以这边采用netty实现UdpClient
- 同步方式采用wait及LockSupport辅助处理
- udp是不保证交付的, 所以添加了超时处理器, 一定时间内没有收到返回消息时重试n次请求
系统设计
详细设计
关键类说明
- UdpClient代表udp客户端
- UdpClientChannelInitializer代表netty的初始化配置
- UdpTimeOutServerHandler&UdpHandler代表具体的handler
- MainApp代表主线程类</