代码拉取完成,页面将自动刷新
##ZBUS 特性
##ZBUS 项目结构
总线默认占用15555端口, http://localhost:15555 可以直接进入监控,注意zbus因为原生兼容HTTP协议所以监控与消息队列使用同一个端口
高可用模式启动总线 分别启动zbusServer与TrackServer,无顺序之分,默认zbusServer占用15555端口,TrackServer占用16666端口。
<dependency>
<groupId>org.zstacks</groupId>
<artifactId>zbus</artifactId>
<version>6.0.0</version>
</dependency>
//1)创建Broker代理【重量级对象,需要释放】
SingleBrokerConfig config = new SingleBrokerConfig();
config.setBrokerAddress("127.0.0.1:15555");
final Broker broker = new SingleBroker(config);
//2) 创建生产者 【轻量级对象,不需要释放,随便使用】
Producer producer = new Producer(broker, "MyMQ");
producer.createMQ(); //如果已经确定存在,不需要创建
Message msg = new Message();
msg.setBody("hello world");
Message res = producer.sendSync(msg, 1000);
System.out.println(res);
//3)销毁Broker
broker.close();
//1)创建Broker代表
SingleBrokerConfig brokerConfig = new SingleBrokerConfig();
brokerConfig.setBrokerAddress("127.0.0.1:15555");
Broker broker = new SingleBroker(brokerConfig);
MqConfig config = new MqConfig();
config.setBroker(broker);
config.setMq("MyMQ");
//2) 创建消费者
@SuppressWarnings("resource")
Consumer c = new Consumer(config);
c.onMessage(new MessageCallback() {
public void onMessage(Message msg, Session sess) throws IOException {
System.out.println(msg);
}
});
参考源码test目下的rpc部分
SingleBrokerConfig config = new SingleBrokerConfig();
config.setBrokerAddress("127.0.0.1:15555");
Broker broker = new SingleBroker(config);
RpcProxy proxy = new RpcProxy(broker);
Interface hello = proxy.getService(Interface.class, "mq=MyRpc");
Object[] res = hello.objectArray();
for (Object obj : res) {
System.out.println(obj);
}
Object[] array = new Object[] { getUser("rushmore"), "hong", true, 1,
String.class };
int saved = hello.saveObjectArray(array);
System.out.println(saved);
Class<?> ret = hello.classTest(String.class);
System.out.println(ret);
broker.close();
无任何代码侵入使得你已有的业务接口接入到zbus,获得跨平台和多语言支持
<!-- 暴露的的接口实现示例 -->
<bean id="interface" class="org.zstacks.zbus.rpc.biz.InterfaceImpl"></bean>
<bean id="serviceHandler" class="org.zstacks.zbus.client.rpc.RpcServiceHandler">
<constructor-arg>
<list>
<!-- 放入你需要暴露的接口 ,其他配置基本不变-->
<ref bean="interface"/>
</list>
</constructor-arg>
</bean>
<!-- 切换至高可用模式,只需要把broker的实现改为HaBroker配置 -->
<bean id="broker" class="org.zstacks.zbus.client.broker.SingleBroker">
<constructor-arg>
<bean class="org.zstacks.zbus.client.broker.SingleBrokerConfig">
<property name="brokerAddress" value="127.0.0.1:15555" />
</bean>
</constructor-arg>
</bean>
<!-- 默认调用了start方法,由Spring容器直接带起来注册到zbus总线上 -->
<bean id="zbusService" class="org.zstacks.zbus.client.service.Service" init-method="start">
<constructor-arg>
<bean class="org.zstacks.zbus.client.service.ServiceConfig">
<property name="broker" ref="broker"/>
<property name="mq" value="MyRpc"/>
<property name="threadCount" value="2"/>
<property name="serviceHandler" ref="serviceHandler"/>
</bean>
</constructor-arg>
</bean>
<!-- 切换至高可用模式,只需要把broker的实现改为HaBroker配置 -->
<bean id="broker" class="org.zstacks.zbus.client.broker.SingleBroker">
<constructor-arg>
<bean class="org.zstacks.zbus.client.broker.SingleBrokerConfig">
<property name="brokerAddress" value="127.0.0.1:15555" />
<!-- 这里可以增加连接池参数配置,不配置使用默认值(参考commons-pool2) -->
</bean>
</constructor-arg>
</bean>
<bean id="rpcProxy" class="org.zstacks.zbus.client.rpc.RpcProxy">
<constructor-arg> <ref bean="broker"/> </constructor-arg>
</bean>
<!-- 动态代理由RpcProxy的getService生成,需要知道对应的MQ配置信息(第二个参数) -->
<bean id="interface" factory-bean="rpcProxy" factory-method="getService">
<constructor-arg type="java.lang.Class" value="org.zstacks.zbus.rpc.biz.Interface"/>
<constructor-arg>
<bean class="org.zstacks.zbus.client.rpc.RpcConfig">
<property name="mq" value="MyRpc"/>
</bean>
</constructor-arg>
</bean>
Spring完成zbus代理透明化,zbus设施从你的应用逻辑中彻底消失
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("zbusSpringClient.xml");
Interface intf = (Interface) context.getBean("interface");
System.out.println(intf.listMap());
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。