我们在日常开发中可以需要用到消息队列 当然我们完全可以自己写一个生产者-消费者框架 但是高可用性、实时性已经大量数据堆积时候就显得问题捉襟见肘了下面推荐的框架在我时间项目中和测试中都是非常不错那么他是什么框架呢?
zbus git地址 javascript:void(0) ZBUS=MQ+RPC 服务总线 1)支持消息队列, 发布订阅, RPC, 交易系统队列适配 2)亿级消息堆积能力、支持HA高可用 3)无依赖单个Jar包 ~300K 4)丰富的API--JAVA/C/C++/C#/Python/Node.JS多语言接入,支持HTTP等协议长连接入。。。详情见git描述。
ZBUS--轻量级MQ、RPC、服务总线
ZBUS = MQ + RPC + PROXY
- 支持消息队列, 发布订阅, RPC, 代理(TCP/DMZ)
- 亿级消息堆积能力、支持HA高可用
- 单个Jar包无依赖 ~300K
- 服务代理 -- 适配改造已有业务系统,使之具备跨平台与语言
- 丰富的API--JAVA/C/C++/C#/Python/Node.JS多语言接入
怎样使用呢?
很简单在项目中直接引入zbus-6.2.0.jar 开发c-p
p:
public class ConsumerExample {
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();
}
}
c: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,应用协议交给使用者
long total = 0;
for(int i=0;i<1000000000;i++){
long start = System.currentTimeMillis();
Message msg = new Message();
msg.setBody("hello world"+i);
producer.sendSync(msg);
long end = System.currentTimeMillis();
total += (end-start);
System.out.format("Time: %.1f\n", total*1.0/(i+1));
}
broker.close();
}
启动zbus服务 zbus.bat批处理文件 需要注意设置 jdk路径
REM SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80
SET ZBUS_HOME=.
SET JAVA_OPTS=-server -Xms64m -Xmx1024m -XX:+UseParallelGC
SET MAIN_CLASS=org.zbus.mq.server.MqServer
SET MAIN_OPTS=-h 0.0.0.0 -p 15555 -thrift 0.0.0.0:25555 -verbose false -store store -track
SET LIB_OPTS=%ZBUS_HOME%/lib;%ZBUS_HOME%/*;
IF NOT EXIST "%JAVA_HOME%" (
SET JAVA=java
) ELSE (
SET JAVA=%JAVA_HOME%\bin\java
)
"%JAVA%" %JAVA_OPTS% -cp %LIB_OPTS% %MAIN_CLASS% %MAIN_OPTS%
ok 可以开始体验了!!!