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 端口, http://localhost:15555 可以直接进入监控,注意zbus因为原生兼容HTTP协议所以监控与消息队列使用同一个端口
引入依赖
<dependency>
<groupId>org.zbus</groupId>
<artifactId>zbus</artifactId>
<version>7.2.0</version>
</dependency>
无任何代码侵入使得你已有的业务接口接入到zbus,获得跨平台和多语言支持
Spring集成–服务端
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"
default-lazy-init="false">
<bean
class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<!-- 暴露的的接口实现示例 -->
<bean id="userRpcService" class="com.thinkgem.jeesite.modules.sys.service.rpc.UserRpcServiceImpl"></bean>
<bean id="systemRpcService" class="com.thinkgem.jeesite.modules.sys.service.rpc.SystemRpcServiceImpl"></bean>
<bean id="serviceProcessor" class="org.zbus.rpc.RpcProcessor">
<constructor-arg>
<list>
<!-- 放入你需要的暴露的的接口 -->
<ref bean="userRpcService"/>
<ref bean="systemRpcService"/>
</list>
</constructor-arg>
</bean>
<bean id="broker" class="org.zbus.broker.ZbusBroker">
<constructor-arg>
<bean class="org.zbus.broker.BrokerConfig">
<property name="brokerAddress" value="${zbus.broker.address}" />
<property name="maxTotal" value="${zbus.broker.max.total}"/>
<!-- 这里可以增加连接池参数配置,不配置使用默认值(参考commons-pool2) -->
</bean>
</constructor-arg>
</bean>
<!-- 默认调用了start方法,由Spring容器直接带起来注册到zbus总线上 -->
<bean id="myrpcService" class="org.zbus.rpc.mq.Service" init-method="start">
<constructor-arg>
<bean class="org.zbus.rpc.mq.ServiceConfig">
<!-- 支持多总线注册 -->
<constructor-arg>
<list>
<ref bean="broker"/>
</list>
</constructor-arg>
<property name="mq" value="SysRpc"/>
<property name="messageProcessor" ref="serviceProcessor"/>
</bean>
</constructor-arg>
</bean>
</beans>
Spring集成–客户端
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean id="broker" class="org.zbus.broker.ZbusBroker">
<constructor-arg>
<bean class="org.zbus.broker.BrokerConfig">
<property name="brokerAddress" value="172.16.1.195:15555"/>
<!--
高可用HA只需要改变brokerAddress为trackServer地址列表 单个tracker地址要有分号
<property name="brokerAddress" value="127.0.0.1:16666;127.0.0.1:16667" />
-->
</bean>
</constructor-arg>
</bean>
<bean id="myrpc" class="org.zbus.rpc.RpcFactory">
<constructor-arg>
<bean class="org.zbus.rpc.mq.MqInvoker">
<constructor-arg ref="broker"/>
<constructor-arg value="MyRpc"/>
</bean>
</constructor-arg>
</bean>
<bean id="userRpcService" factory-bean="myrpc" factory-method="getService">
<constructor-arg type="java.lang.Class" value="com.thinkgem.jeesite.modules.sys.service.rpc.UserRpcServiceImpl"/>
</bean>
<bean id="systemRpcService" factory-bean="myrpc" factory-method="getService">
<constructor-arg type="java.lang.Class" value="com.thinkgem.jeesite.modules.sys.service.rpc.SystemRpcServiceImpl"/>
</bean>
</beans>
Spring完成zbus代理透明化,zbus设施从你的应用逻辑中彻底消失