博客
关于我
Solon rpc 之 SocketD 协议 - 消息订阅模式
阅读量:445 次
发布时间:2019-03-06

本文共 1350 字,大约阅读时间需要 4 分钟。

Solon rpc 之 SocketD 协议系列

SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案。它的消息协议规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。暂时只提供Java实现,目前做为Solon rpc的sockte通道协议。

本案以简单的消息订阅模式为例演示:(即等着你给我来信,例如配置服务的变更通知)

服务端

//启动服务端public class ServerApp {    public static void main(String[] args) {        //启动Solon容器(SocketD bean&plugin 由solon容器管理)        Solon.start(ServerApp.class, args, app -> app.enableSocketD(true));    }}//定义一个给所有会话广播的工具public class SessionUtil {    public static void broadcast(Message message){        for(Session session : SessionManager.socket().getOpenSessions()){            session.send(message);        }    }    public static void broadcast(String message){        for(Session session : SessionManager.socket().getOpenSessions()){            session.send(message);        }    }}//在需要的地方,进行广播(例如:配置服务的更新通知)SessionUtil.broadcast("Hello client!");

客户端

//启动客户端public class ClientApp {    public static void main(String[] args) throws Throwable {        //启动Solon容器(SocketD bean&plugin 由solon容器管理)        Solon.start(ClientApp.class, args);    }}@ClientEndpoint(uri = "tcp://localhost:28080")public class ClientListener implements Listener {    @Override    public void onMessage(Session session, Message message) {        //收到消息,业务处理        System.out.println("客户端:我收到了:" + message);    }}

附:示例源码

  • 源码:
  • 带签权的源码:

转载地址:http://etwfz.baihongyu.com/

你可能感兴趣的文章
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql where中如何判断不为空
查看>>