当前位置: 首页 > news >正文

水安建设集团网站做任务换流量的网站

水安建设集团网站,做任务换流量的网站,3g手机网站,目前最好的找工作平台介绍 笔者项目中使用purejavacomm实现串口通信,purejavacomm自带线程池以实现COM口的监听,但是当后续数据处理流程过长,线程占用时间过长,会导致监听阻塞,会导致粘包出现。 解决办法 笔者项目中使用redis来做缓存&a…

介绍

笔者项目中使用purejavacomm实现串口通信,purejavacomm自带线程池以实现COM口的监听,但是当后续数据处理流程过长,线程占用时间过长,会导致监听阻塞,会导致粘包出现。

解决办法

笔者项目中使用redis来做缓存,也就顺便用redis做了消息队列,以实现purejavacomm线程池线程的快速归还,然后再用自定义更大的线程池来实现串口数据的处理。

Redis消息队列实现

@Resourceprivate JedisPool jedisPool;@Resource@Qualifier("taskExecutor")private Executor taskExecutor;@Overridepublic void publishMessage(String channel, String message) {try (Jedis jedis = jedisPool.getResource()) {jedis.publish(channel, message);}catch (Exception e){e.printStackTrace();log.error("发布消息异常!" + e);}}// 实现订阅方法@Overridepublic void subscribeToChannel(String channel, MessageListener listener) {taskExecutor.execute(() -> {try (Jedis jedis = jedisPool.getResource()) {JedisPubSub pubSub = new JedisPubSub() {@Overridepublic void onMessage(String channel, String message) {listener.onMessage(channel, message);}};jedis.subscribe(pubSub, channel);} catch (Exception e) {e.printStackTrace();}});}

串口数据解析

CommandLineRunner 是一个非常有用的接口,特别适合在应用启动时执行初始化或监听任务。在代码中,它被用来启动 Redis 消息监听器,确保应用启动后能够立即开始处理来自 Redis 的消息。

@Component
@Slf4j
public class DataHandler implements CommandLineRunner {// ... 其他代码 ...@Overridepublic void run(String... args) throws Exception {log.info("DataHandler 启动成功!开始监听消息");redisService.subscribeToChannel(REDIS_QUEUE_NAME, (channel, message) -> {log.info("DataHandler 收到消息:{}", message);try {String[] split = message.split(":");if (split.length == 2) {String comNum = split[0];byte[] readBuffer = ByteUtil.hexToByteArray(split[1], false);dataHandle(readBuffer, comNum);}} catch (Exception e) {e.printStackTrace();log.error("DataHandler 处理消息出错:{}", e.getMessage());}});}
}
http://www.dtcms.com/a/469426.html

相关文章:

  • 【自适应滤波】自适应UKF,基于新息自适应调节Q和R,场景为雷达跟踪与滤波、MATLAB实现
  • C语言文件管理
  • 【解决】Unable to locate configuration file
  • 计算机视觉(opencv)——仿射变换(Affine Transformation)
  • Hadess入门到实战(11) - 如何导入Nexus制品,实现平滑迁移
  • Spring内置功能
  • Windows离线安装OpenSSH.Server
  • 【SELinux】解决 systemd 服务因权限问题无法启动(203/EXEC)的完整方案
  • maven下载与安装及在IDEA中配置maven
  • 云南省建设工程标准定额网站挣钱最快的游戏
  • git执行git remote关联了仓库后的.git文件夹目录下到底是些什么东西?优雅草卓伊凡
  • SpringBoot+Hutool+Vue实现导出
  • 中山建设厅网站首页山东济南网站推广
  • ⸢ 柒-Ⅲ⸥⤳ 可信纵深防御建设方案:数据使用可信端安全可信
  • PHP多维数组按指定字段排序usort自定义排序方法(或使用太空船操作符 <=> 进行比较,默认按升序排序)
  • Ubuntu 20.04 安装 Redis
  • etcd节点噶了导致的k8s集群瘫痪处理参考——筑梦之路
  • stm32底层项目20251011
  • http://localhost:7474/browser/ 登陆之后账号密码neo4j / neo4j 不对 页面出现以下:
  • 网站后台添加不了图片2008r2做网站
  • 学工网站建设博物馆网站建设说明
  • RabbitMQ概述,Rabbitmq是什么
  • C 语言12:字符串函数全解析
  • 国家城乡建设规划部网站邢台专业网站建设价格
  • 三层架构:解耦 JavaWeb 开发的核心范式
  • MySQL————表的约束
  • 速度达24.3MB/s,最新精简可用版!
  • 分业务采用差异化模式:全面提升 SQL Server 系统的并发性能、可靠性与数据准确性
  • 【Linux】应用层自定义协议与序列化
  • 文件上传漏洞: .htaccess文件