Californium CoapEndpoint UDPConnector 线程分析

1. CoapEndpoint: 绑定到

  • 成员变量coapStack: 业务层处理,使用线程池,对应CoapEndpoint中的executor
  • 成员变量connector:  传输层处理,发送和接收消息,使用单独线程,对应UDPConnector中的Sender、Receiver

2. 逻辑结构

发送消息:使用了比较常用的设计方法,使用阻塞消息队列,隔离了coap协议层组装coap消息(即生产消息)、和只负责发送coap消息的Sender(即消费消息)

UDPConnector中的send方法

接收消息:

CoapEndpoint中的InboxImpl 

UDPConnector.java

3. 常用的模式

生产者 -> 阻塞消息队列 -> 消费者

(mqtt paho 中发送消息,也使用了该种方式,不过使用的是Vector作为队列,Object作为lock,整体作为阻塞队列来进行控制)
优点:
  业务解耦,模块解耦
  阻塞消息队列,还可以类比一些消息中间件,比如:kafka、rocketmq、rabbitmq等

参考:

https://github.com/eclipse/californium

https://github.com/eclipse/californium/issues/434  UDPConnector中没有使用NIO,有人提议可以使用UDP NIO,比如基于netty实现传输层,作者认为改动后优势不大,所以暂时没动

https://gist.github.com/martinmine/7ef19800cdcd380a138bae5bec89e18e  其他人提供了基于UDP NIO实现的Connector

https://stackoverflow.com/questions/16048284/whats-the-point-of-using-udp-with-nio/16048705#16048705

https://github.com/eclipse/leshan  基于Californium实现了lwm2m client / server 

https://github.com/eclipse/paho.mqtt.java  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值