博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】Spring mvc集成ZBUS--轻量级MQ、RPC、服务总线
阅读量:7073 次
发布时间:2019-06-28

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

本文转自:http://www.cnblogs.com/top15from/p/4899954.html

ZBUS = MQ + RPC + PROXY

  • 支持消息队列, 发布订阅, RPC, 代理(TCP/DMZ)
  • 亿级消息堆积能力、支持HA高可用
  • 单个Jar包无依赖 ~300K
  • 服务代理 -- 适配改造已有业务系统,使之具备跨平台与语言
  • 丰富的API--JAVA/C/C++/C#/Python/Node.JS多语言接入

zbus-dist选择zbus.sh或者zbus.bat直接执行

简单监控

总线默认占用 15555 端口,  可以直接进入监控,注意zbus因为原生兼容HTTP协议所以监控与消息队列使用同一个端口

ZBUS 角色概要

zbus-arch

ZBUS 消息通讯基础(NET模块)

ZBUS项目不依赖其他第三方库,消息通讯基于NIO完成(NET子项目)。NET包对NIO做了简洁的封装,相对Netty而言,学习成本低几个量级,模型简单,但不失扩展性。

znet-arch

框架结构保持 Dispatcher + N SelectorThread + IoAdaptor

Dispatcher 负责管理N个Selector线程

SelectorThread 负责NIO读写事件分发

IoAdaptor 个性化读写事件

基于NET的服务器程序基本只要关心IoAdaptor的个性化,比如ZBUS入口就是MqAdaptor

ZBUS API

ZBUS PROXY

ZBUS 示例

Java Maven 依赖

org.zbus
zbus
6.2.6

生产者

public static void main(String[] args) throws Exception {     //创建Broker代理    BrokerConfig config = new BrokerConfig();    config.setServerAddress("127.0.0.1:15555");    final Broker broker = new SingleBroker(config);    Producer producer = new Producer(broker, "MyMQ");    producer.createMQ(); // 如果已经确定存在,不需要创建    //创建消息,消息体可以是任意binary,应用协议交给使用者    Message msg = new Message();    msg.setBody("hello world");    producer.sendSync(msg);      broker.close();}

消费者

public static void main(String[] args) throws Exception{      //创建Broker代表    BrokerConfig brokerConfig = new BrokerConfig();    brokerConfig.setServerAddress("127.0.0.1:15555");    Broker broker = new SingleBroker(brokerConfig);    MqConfig config = new MqConfig();     config.setBroker(broker);    config.setMq("MyMQ");    //创建消费者    @SuppressWarnings("resource")    Consumer c = new Consumer(config);      c.onMessage(new MessageHandler() {         @Override        public void handle(Message msg, Session sess) throws IOException {            System.out.println(msg);        }    });    //启动消费线程    c.start();   }

RPC动态代理【各类复杂类型】

参考源码test目下的rpc部分

//1)创建Broker代表(可用高可用替代)    BrokerConfig config = new BrokerConfig();    config.setServerAddress("127.0.0.1:15555");    Broker broker = new SingleBroker(config);    //2)创建基于MQ的Invoker以及Rpc工厂,指定RPC采用的MQ为MyRpc    MqInvoker invoker = new MqInvoker(broker, "MyRpc");     RpcFactory factory = new RpcFactory(invoker);     //3) 动态代理出实现类    Interface hello = factory.getService(Interface.class);    test(hello);      broker.close();

Spring集成--服务端(RPC示例)

无任何代码侵入使得你已有的业务接口接入到zbus,获得跨平台和多语言支持

Spring集成--客户端

Spring完成zbus代理透明化,zbus设施从你的应用逻辑中彻底消失

public static void main(String[] args) {     ApplicationContext context = new ClassPathXmlApplicationContext("SpringRpcClient.xml");    Interface intf = (Interface) context.getBean("interface");     for(int i=0;i<100;i++){        System.out.println(intf.listMap());    } }

ZBUS消息协议

你可能感兴趣的文章
自制WheelView沉浸式菜单及Dialog样式Activity
查看>>
python-62: BS4的基本知识
查看>>
jsp中文显示乱码的解决办法
查看>>
Cmakelists.txt中间部分模板
查看>>
eclipse中java工程转web工程
查看>>
linux中的僵尸进程
查看>>
clustershell批量执行shell命令
查看>>
fedora 19 安装mp3 解析
查看>>
redhat7.2配置yum源
查看>>
iOS开发之左右抖动效果
查看>>
血的教训---工作中注意的事项(未完)
查看>>
php转义之gpc
查看>>
PHP应用如何对接微信公众号JSAPI支付
查看>>
IE中用JS让页面全屏的方式(达到F11的 效果)
查看>>
exec-timeout
查看>>
CSS伪类的一些用法以及visibility:hidden和display:none的一些区别
查看>>
VLAN及vlan路由
查看>>
Centos 配置 puppet 服务
查看>>
Android四大组件
查看>>
删除异常的MS SQL进程
查看>>