Giter Site home page Giter Site logo

sanshengshui / netty-learning-example Goto Github PK

View Code? Open in Web Editor NEW
2.8K 78.0 797.0 2.04 MB

:egg: Netty实践学习案例,见微知著!带着你的心,跟着教程。我相信你行欧。

License: Apache License 2.0

Java 99.86% Dockerfile 0.14%
netty http protobuf mqtt fastjson zero-copy kafka rpc iot im

netty-learning-example's Introduction

Netty-learning-example 知识共享协议(CC协议)

GitHub stars GitHub forks GitHub watchers

前言:

You built it,You run it!

尚未完成,持续更新中...!

备注: 🔧 :表示施工中,尚未完成; 📝 :表示已完成,但是没有写博文; 👌 表示已完成,并有相应的博文;

水平分割线

什么是Netty?能做什么?

  • Netty是一个致力于创建高性能网络应用程序的成熟的IO框架

  • 相比较与直接使用底层的Java IO API, 你不需要先成为网络专家就可以基于Netty去构建复杂的网络 应用

  • 业界常⻅的涉及到网络通信的相关中间件大部分基于Netty实现网络层,如下图所示:

    中间件

本工程致力于netty实践学习案例,是netty初学者及核心技术巩固的最佳实践

a.『 基础 - 入门篇 』

b. 『 基础 - 通讯协议篇 』

  1. 《Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上》
  2. 《Netty实现高性能IOT服务器(Groza)之精尽代码篇中》

c. 『 中级 - 数据传输篇 』

Netty碰上关系型数据库:monkey:

  • 📝netty-jpa-mysql

《netty之jpa持久化数据至MySql》

Netty邂逅非关系数据库:horse:

Netty助力流式计算:racehorse:

d. 『 高级 - 高级应用篇 』

e. 『 高级 - Netty特性,源码篇 』

🍄 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue ...) Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。🍄

  1. 《高性能/并发的保证-Netty在Redisson的应用》

f. 『 号外 - 相关知识归纳篇 』

netty-learning-example's People

Contributors

dependabot[bot] avatar sanshengshui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

netty-learning-example's Issues

mqtt connect报文

if (!msg.variableHeader().isCleanSession()) { List<DupPublishMessageStore> dupPublishMessageStoreList = grozaDupPublishMessageStoreService.get(msg.payload().clientIdentifier()); List<DupPubRelMessageStore> dupPubRelMessageStoreList = grozaDupPubRelMessageStoreService.get(msg.payload().clientIdentifier()); dupPublishMessageStoreList.forEach(dupPublishMessageStore -> { MqttPublishMessage publishMessage = (MqttPublishMessage) MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBLISH, true, MqttQoS.valueOf(dupPublishMessageStore.getMqttQoS()), false, 0), new MqttPublishVariableHeader(dupPublishMessageStore.getTopic(), dupPublishMessageStore.getMessageId()), Unpooled.buffer().writeBytes(dupPublishMessageStore.getMessageBytes()) ); channel.writeAndFlush(publishMessage); }); dupPubRelMessageStoreList.forEach(dupPubRelMessageStore -> { MqttMessage pubRelMessage = MqttMessageFactory.newMessage( new MqttFixedHeader(MqttMessageType.PUBREL, true, MqttQoS.AT_MOST_ONCE, false, 0), MqttMessageIdVariableHeader.from(dupPubRelMessageStore.getMessageId()), null ); channel.writeAndFlush(pubRelMessage); }); }

清理会话标志位设置为保存会话,设备连接成功后,为什么是“重发同一clientId存储的未完成的QoS1和QoS2的DUP消息”?我查看mqtt3.3.1文档时,发现是这么说的“清理会话标志设置为0的客户端会收到所有在它连接断开期间发布的QoS 1和QoS 2级别的消息”。但是代码里的实现,写的是发布该设备未完成的消息出去,而不是接收在断开连接期间的消息。

helloworld写法有些问题

helloworld里的ServerInitializer.java
private static final ServerHandler SERVER_HANDLER = new ServerHandler();
这里用了static final,所以这个server只能连接一次,客户端断开就再也连不上了。

请教问题

感谢您的分享,有如下问题想要请教:
1。请问mqtt中的kafka是什么作用呢,消息不是已经通过channel发送给client了么,为什么kafka也要发呢
2.im那个项目登陆校验放在在pipline中后面的消息不是登陆的LoginRequestPacket怎么处理的呢

mqtt工程的MqttTransportHandler

不好意思,刚刚开始看这个mqtt的工程,MqttTransportHandler 为什么要加上共享这个handler注解? 这样做线程安全怎么保证吗?

问个弱弱的问题?

大佬,java做物联网怎么入门啊,我目前一直在做javaweb开发,想转型下.
是不是要自己买硬件连一下啊?求给个方向啊,光写netty没实践感觉用不上啊

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.