关于Netty在项目中的使用-疑惑!

各位好,
小弟有一事不明,请大拿们指点一二!

我想实现一个交易框架,使用netty实现,netty是基于事件的NIO框架,用它做为ServerSocket来处理客户请求,但客户方是用传统的同步BIO来实现的,就是通过socket.connect()这种方式连接到我的netty serverSokcet上来,netty不会保留connection,读完数据就把channel关闭了,connection自然也就不存在了,但client端是同步的需要等待响应,怎么将nettyserver返回的数据同步返回给client呢?
这种场景应该如何实现?请大拿指教!

net
0

2个回答

在handler里处理业务后,直接调用channel返回数据

0

先写一个借口,带一个方法或参数,然后在你需要等待相应的方法里声明一个内部类实现该借口,实现借口的方法用作回调,然后把这个内部类传到handler那边,读到数据后关闭通道之前执行以下回调方法,搞定

-2
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
nio框架netty在项目中的应用
背景: 省分短信发送每天都差不多要1000W条上下,遇到特殊节假日和政府通告时量会更大!boss系统中存放的是短信发送内容,而真正完成发送短信指令动作是的华为方做的短厅,这么大的通信量选择了netty来完成数据传输并自定义了一套基于netty的SGIP协议进行通信; 省分boss系统—>短信营业厅(); 基本知识 2.1 TCP/IP网络协议 网上很多有关这个协议的解释,自行googl
Netty入门应用之第一个netty项目
服务器端代码 public class TimeServer { public void bind(int port) throws Exception{ //创建两NioEventLoopGroup实例。 //NioEventLoopGroup是个线程组。 EventLoopGroup bossGroup = new NioEvent
使用netty遇到的内存泄露的问题
上个项目用的netty,刚开始项目上线的时候隔一段时间会遇到内存泄露的问题,检查了很久代码,该优化的都优化了,总是没发现问题,也加了日志追踪,就是发现不了问题,偶尔看到一篇文章介绍ServerHanderl继承的类,然后自己查找资料才发现就是这里的问题,我是继承的SimpleChannelInboundHandler这个类,这个类的特点就是会自动释放buffer,然后在后面异步使用buffer的时...
使用 Netty 搭建消息中心
简介: Netty 是一套异步事件驱动的网络应用程序框架,支持快速开发可维护、高性能、面向协议的服务器和客户端。Netty 中涵盖包括网络通讯、多线程处理和并发等多个领域的专业知识,并优雅的将这些知识组织和处理。重要 本例中,所有消息处理均采用模拟处理方式,不涉及实际实现!!!基础概念: Netty 中的几个基础知识点 选择器 Channel EventLoop 回调 Future 事件和 C
【Netty】Netty实例开源项目
Netty 前言 netty-introduction-demo:Netty的入门实例 简介 netty-serialization-demo:Netty传输序列化对象 简介 netty-heartbeat-detection-demo:使用Netty进行服务器和客户端的心跳检测 简介 netty-not-sticky-pack-demo:Netty解决粘包问题,传输序列化对象 ...
Netty面试遇到的问题
1,Netty的底层模型
spring boot+mvc+mybatis+netty-sokey.io+html+js实现简单即时通讯聊天系统
项目采用整合spring boot+mvc+mybatis+netty-sokey.io+html+js实现简单的一对一聊天和聊天室多人聊天
关于solr的一些总结和问题
关于solr的一些总结和问题,主要是solrJ,schema.xml,solrCloud
轻松读取项目中properties文件的方式
轻松读取项目中properties文件的方式
在项目中使用 RocketMQ
为什么需要用消息队列 异步处理 应用解耦 流量削峰 前面几点好多文章都有介绍,这里就不再说明了。 怎样用才合理 消息过滤 在消息不频繁的情况,在 Customer 过滤也是一个比较好的选择,自由度更高 Broker 端消息过滤 优点:由 broker 端 过滤消息,减少消费端收到过多的无用消息 缺点:对 borker 有一定压力 Customer端...
kotlin 项目中 Netty中使用MessagePack 传输 编码/解码
仍然需要注意的是,我使用的是Netty 5.x的版本。 另外我在程序代码中写了非常详细的注释,所以这里不再进行更多的说明。 发送器,编码 package com.goav.netty.Handler import com.daveanthonythomas.moshipack.MoshiPack import com.ftrd.flashlight.FileKt.LogUtils ...
这么说吧,Netty很简单,其实就是个Jar包,是作为通讯组件用的
今天,我们用简单点的语言来描述NettyNetty是什么?0 ) 关键词:Netty、NIO、异步、通讯、1)本质:一个Jar包,一个NIO框架,是对 socket 网络编程的优秀包装2)作用:既然netty 是对 socket 网络编程的优秀包装.那么在没有Netty之前,jdk强迫你必须用socket来写服务器,实际上是很繁琐的,缺乏一个高层次的api...
记一次java进程占用内存高,Netty中的buffer一直没被gc的排查
最近发现一个项目在部署到机器上的时候,机器内存一直占用很高。 接着开始排查机器内存高的原因 1、查找机器上占用内存高的进程 ps aux |sort -k4nr|head -20查找占用内存高的前20个进程 发现前20个进程平均每个进程占用内存3g,总共就占用了60g。每个进程占用内存都很高,是造成机器总体内存高的原因。 2、查看进程的内存占用情况 以进程号13588为例,使...
SpringBoot整合Netty并使用Protobuf进行数据传输(附工程)
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容。Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不再过多细说了。 Protobuf 介绍 protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:j...
关于游标的应用实例
在最近的开发过程中,底层数据库的逻辑稍微有些复杂,在这个过程中涉及到了游标的使用,结合项目的逻辑我简单描述一下游标的使用,如果能对您有一点点的帮助,我将非常高兴,有不合理之处,欢迎大神随时指出。     首先,简述一下开发环境,我们的数据库是Oracle,IDE是PL/SQL Developer,游标是在存储过程中使用的。    我们总览一下代码: create or replace p
Netty 学习 - Server与Client的启动过程
本文主要记录在学习Netty4的代码中学习到的知识点,方便后续的查看 第一部分: 服务端ServerBootstrap与客户端BootStrap ServerBootStrap与BootStrap均继承于AbstactBootStrap,AbstractBootstrap完成了大部分的模板方法,提供抽象方法供服务端和客户端启动类实现 启动流程如下:服务端BIND
MFC中使用Winform
关于在MFC项目中使用C#写的WinForm控件
基于谷歌的 ZXing 二维码扫描Demo
关于扫描二维码的一个Demo,可以直接拷贝到项目中使用
关于vue项目中js实现轮播功能。
关于vue项目中js实现轮播功能。 由于项目要求,ui组件库实现不好要的效果,所以,手动写了一个。 先看效果吧 这里左右箭头是可以点击滑动的,类似轮播样式,这里是由于后台返回数据list,一次加载3条 实现方法主要下面介绍 首先是静态页面 <div class="process-box" ref='processBox'> <p>员工历程</...
关于数据库在项目中的应用的反思(1)
关于数据库在项目中的应用的反思(1)       首先想说一下在软件项目中的感悟,一个软件项目需要一个好的、稳定的、高效的数据库做支撑,特别是一些比较大型的应用开发,对数据库的要求更高,而能否做出一个好的数据库与制作的软件相配,这个问题对于软件的开发来说至关重要,而且一个正常的、常规的软件开发步骤应该按照严格的规范来:       首先是对整个软件系统进行分析,在这一部分,特别
springboot在启动项目时初始化自定义方法,以netty为例,三种方式对比
上一篇博客中我实现了客户端的断线重连,断开连接后无限重试,并在连接之后无限发送消息给客户端,有兴趣的朋友可以查看我的这篇博客netty客户端连接后无限发送数据,连接不上时无限重试,断线重连 需求是这样的,在springboot项目启动后,需要自动启动启动Netty的客户端,并且无限给服务端发送消息,并将返回的消息利用mybatis存储进数据库。(存库这一步我就不说了,主要实现在项目启动时启动ne...
问问:关于项目中的一个疑惑
CitySkyXEvent.hrn#ifndef _CitySkyXEvent_Hrn#define _CitySkyXEvent_Hrnrnrn#include "CityComponentPlatform.h"rn#include "CityInputEvent.h"rn#include "CityObjectPtr.h"rn#include "CityString.h"rnrn#if defined(_MSC_VER)rn# pragma warning(push)rn# pragma warning(disable:4251)rn#endifrnrnnamespace CityInfoModelrnrn class _CityComponentExport CitySkyXEventArgs : public CityViewEventArgsrn rn public:rn CitySkyXEventArgs(void* sender, CityView* v) : CityViewEventArgs(sender, v) ;rn // 以下为自定义参数rn Real timeRunSpeed;rn ;rnrnrnrnrn# if defined(_MSC_VER)rn# pragma warning(pop)rn#endifrn#endifrn项目中有多个工程,我在其中的一个工程里面写了这个文件。但是并没有CPP文件。这时候,我在别的工程里面include的时候,能够定义对象,但是会报无法解析的错误。当我在这个这个头文件的工程内文件include后,就没有问题了。这个是为什么呢?rn
Netty——基本使用介绍
1.为什么选择Netty 上一篇文章我们已经了解了Socket通信(IO/NIO/AIO)编程,对于通信模型已经有了一个基本的认识。其实上一篇文章中,我们学习的仅仅是一个模型,如果想把这些真正的用于实际工作中,那么还需要不断的完善、扩展和优化。比如经典的TCP读包写包问题,或者是数据接收的大小,实际的通信处理与应答的处理逻辑等等一些细节问题需要认真的去思考,而这些都需要大量的时间和经历,以及丰富
vue项目中如何使用axios
import axios from "axios"; import vue from "vue"; import store from '../store'; import {router} from '../router/index'; import Cookies from "js-cookie"; // 创建axios实例 const service = axios.create({ ...
【NOIP 2017 提高组 DAY1 T1】小凯的疑惑
算法标签:数学问题
多线程在项目中的体现
概述 线程就是独立的指令流。所有的C#程序都是从main函数开始知道执行结束,这样的程序结构在早期还行,但是现在程序通常需要同时完成多个任务。 eg:用vs编写程序的时,动态帮助窗口会立马显示相关的信息,后台线程会搜索帮助。Word的拼写检查器也一样,一个线程等待用户输入,另一个线程进行后台搜索,第三个线程讲写入的数据存储在临时文件中,第四个线程从Internet上下载其他数据。 服务器端也...
SSM整合(带demo)
最简单的SSM整合有没有 SSM整合多种多样,这里写的是spring托管SqlSessionFactoryBean的这种。。。。。。反正就是那个意思首先搭建项目,看这里有 搭建好之后勒就是各种配置,各种整合了首先是我们的目录,就是这样了 最简单的mapper,就只有一条语句<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper
netty、springboot中的适配器模式
一般用netty来发送和接收数据都会继承SimpleChannelInboundHandler和ChannelInboundHandlerAdapter这两个抽象类,那么这两个到底有什么区别呢? 其实用这两个抽象类是有讲究的,在客户端的业务Handler继承的是SimpleChannelInboundHandler,而在服务器端继承的是ChannelInboundHandlerAdapter。 ...
cassandra 堆外内存管理
为什么需要堆外内存呢单有一些大内存对象的时候,JVM进行垃圾回收时需要收集所有的这些对象的内存也。增加了GC压力。因此需要使用堆外内存。java 分配堆外内存org.apache.cassandra.utils.memory.BufferPool也有相应的实现方法 private static ByteBuffer allocate(int size, boolean onHeap) {
对Java多线程在Netty中的应用的理解
对共享的可变数据同步经常使用Java的老司机都知道,synchronized关键字可以保证同一时刻只有一个线程执行某个方法或者代码块。同步的作用不仅仅是互斥,也是共享可变数据。当一个线程修改可变数据并释放锁后,其他线程可以获得修改后的新值。 下面以ServerBootstrap类为例来分析,该类的初始变量有如下代码:private final Map<ChannelOption<?>, Objec
webservice如何配置实际项目中使用
webservice如何配置实际项目中使用webservice如何配置实际项目中使用webservice如何配置实际项目中使用webservice如何配置实际项目中使用
Elasticsearch 在项目中的实战(大纲)
1.下载安装elasticsearch2.下载安装elasticsearch-head插件,图形化界面操作3.将原有项目数据库数据和ES库连接同步,此处用到工具elasticsearch-jdbc4.将查询或操作的数据源切换到ES库...
4.Netty框架一些细节以及部署问题
博客概述 本博客讲了之前的demo的一些细节,以及在开发中框架该如何使用的问题。 关于write和flush 如果客户端连续写多条数据,然后一次flush出去。服务端会一次性收到所有的信息。这个就出现了tcp的粘包拆包的问题,我们在下一篇博客中进行这个问题的讨论与解决。因为这个现象,实际开发中使用writeandflush的api进行回写数据。 实现长连接与短连接 这两个连接的区别就在于通信完毕之...
项目中遇到的bug及面试问题总结
1.Redis服务器 can not get resource from pool.  1000个线程并发还能跑,5000个线程的时候出现这种问题,查后台debug日志,发现redis 线程池不够。刚开始设置的是: # redis 配置文件 #redis redis.host=127.0.0.1 redis.port=6379 redis.timeout=300 等待时间 1...
多线程在实际项目中的简单应用
项目中如何使用多线程       多线程在项目中主要用来解决并发任务执行。java中线程的主要实现方式有三种:继承Thread类 实现Runnable接口 实现Callable接口。另外还可以通过Executor类来创建多线程线程池。        线程生命周期:首先通过继承thread或者实现runnable接口来创建一个线程,当调用线程的start方法,线程进入就绪状态,如果这时处理器有资源运...
项目中可配置线程池的实现
线程池在项目中的使用一个项目中可能多次使用到线程池,比如发邮件的时候需要使用线程池,执行消息入库的时候可能需要线程池,我们可以通过数据库配置来实现线程池使用1.数据库表中中配置线程池的核心参数主要包括以下参数:线程池名:excutor_name核心线程数:core_pool_size最大线程数:max_pool_size任务队列大小:max_queue_size队列的类型:queue_type (...
netty与tomcat功能比较
总结了netty和tomcat的差异,入门级的比较,希望对读者有点帮助
iOS 多线程在项目中的应用场景(一)
获取线上版本号是一件很耗时的操作,所以开辟一个子线程,代码如下 //检测新版本 //说明:开辟子线程运行耗时代码块,然后在主线程中刷新和显示 dispatch_async(dispatch_get_global_queue(0, 0), ^{ //检测新版本 self.hasNewVersion = [se
解决netty-socketio依赖问题
在一个项目中用到netty-socketio碰到一个问题,有新手碰到这个问题可能会纠结不少时间,写出来以供参考,有碰到类似问题的也可以节省点儿时间。。 在项目源码编译时报错,错误截图如下 Paste_Image.png 错误信息显示 io.netty.util.internal.PlatformDependent 反编译netty-transp...
java学习笔记——spring 之 ioc容器在项目中的使用(创建与销毁)
通常在我们的项目中 ioc容器创建和销毁都要在合适的时机完成;      项目启动:{           IOC创建完成      }        项目销毁{           IOC销毁;      }   我们可以写一个监听器完成这个工作; 但是其实Spring已经帮我们写好了这个监听器;  &amp;lt;!-- needed for ContextLoaderList...