一、udp协议使用场景:
1.面向数据报方式
2.网络数据大多为短消息
3.拥有大量Client
4.对数据安全性无特殊要求
5.网络负担非常重,但对响应速度要求高
废话不多说直接上主菜:
二、依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-integration</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-ip</artifactId>
</dependency>
三、udp实现步骤:
1.实例化一个udp并创建端口与接口通道
@Bean
public UnicastReceivingChannelAdapter getUnicastReceivingChannelAdapter() {
//实例化一个udp 30000端口
UnicastReceivingChannelAdapter adapter = new
UnicastReceivingChannelAdapter(30000);
//接收通道
adapter.setOutputChannelName("udp");
return adapter;
}
2.转换器:接受udp消息在转发出去(转换数据格式为我们需要)
@Transformer(inputChannel="udp",outputChannel="udpString")
public String transformer(Message<?> message) throws UnsupportedEncodingException {
MessageHeaders messageHeaders= message.getHeaders();
return new String((byte[])message.getPayload(),"gbk");
}
3.过滤器:过滤调我们不需要的信息数据:
@Filter(inputChannel="udpString",outputChannel="udpFilter")
public boolean filter(String message) {
return true;
}
4.路由分发器:对接收到的信息进行分发处理(那个处理器处理那个消息)
@Router(inputChannel="udpFilter")
public String routing(String message) {
if(message.contains("status")) {
return "udpRoute1";
} else {
return "udpRoute2";
}
}
5.处理器:进行消息处理操作
//处理器:进行消息的处理
@ServiceActivator(inputChannel="udpRoute1")
public void udpMessageHandle(String message) {
logger.info("udp1:" +message);
}
@ServiceActivator(inputChannel="udpRoute2")
public void udpMessageHandle2(String message) {
logger.info("udp2:" +message);
}
注:连接通道不要写错了哦!!!!