高可用消息队列框架ZBUS

标签: 消息队列 框架 zbus | 发表时间:2016-01-13 10:47 | 作者:1028826685
出处:http://www.iteye.com

我们在日常开发中可以需要用到消息队列 当然我们完全可以自己写一个生产者-消费者框架 但是高可用性、实时性已经大量数据堆积时候就显得问题捉襟见肘了下面推荐的框架在我时间项目中和测试中都是非常不错那么他是什么框架呢?

   zbus git地址 http://git.oschina.net/rushmore/zbus 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 可以开始体验了!!!



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [消息队列 框架 zbus] 推荐:

高可用消息队列框架ZBUS

- - 企业架构 - ITeye博客
我们在日常开发中可以需要用到消息队列 当然我们完全可以自己写一个生产者-消费者框架 但是高可用性、实时性已经大量数据堆积时候就显得问题捉襟见肘了下面推荐的框架在我时间项目中和测试中都是非常不错那么他是什么框架呢.    zbus git地址. http://git.oschina.net/rushmore/zbus ZBUS=MQ+RPC 服务总线 1)支持消息队列, 发布订阅, RPC, 交易系统队列适配 2)亿级消息堆积能力、支持HA高可用 3)无依赖单个Jar包 ~300K 4)丰富的API--JAVA/C/C++/C#/Python/Node.JS多语言接入,支持HTTP等协议长连接入.

快速的消息队列 SquirrelMQ

- Le - 开源中国社区最新软件
SquirrelMQ是一个快速的消息队列.   SquirrelMQ VS Redis 入队列: SquirrelMQ:100万条数据,105S,内存使用84MB. Redis:100万条数据,156S,内存使用127MB.   出队列:   SquirrelMQ:100万条数据,230S. Redis:100万条数据,163S.

Feed消息队列架构分析

- - Tim[后端技术]
最近一两年,大部分系统的数据流由基于日志的离线处理方式转变成实时的流式处理方式,并逐渐形成几种通用的使用方式,以下介绍微博的消息队列体系. 当前的主要消息队列分成如图3部分. 1、feed信息流主流程处理,图中中间的流程,通过相关MQ worker将数据写入cache、Redis及MySQL,以便用户浏览信息流.

redis作为消息队列的使用

- - ITeye博客
在redis支持的数据结构中,有一个是集合list. 对List的操作常见的有lpush  lrange等. 在这种常见的操作时,我们是把集合当做典型意义上的‘集合’来使用的. 往往容易被忽视的是List作为“队列”的使用情况. 反编译redis的jar包,会发现:.  pop意为“弹”,是队列里的取出元素.

[转]消息队列的两种模式

- -
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. 点对点与发布订阅最初是由JMS定义的. 这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅).

消息队列设计精要

- - 美团点评技术团队
消息队列已经逐渐成为企业IT系统内部通信的核心手段. 它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一. 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等.

深入浅出 消息队列 ActiveMQ

- - 编程语言 - ITeye博客
ActiveMQ 是Apache出品,最流行的、功能强大的. 即时通讯和集成模式的开源服务器. ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现. 提供客户端支持跨语言和协议,带有易于在充分支持JMS 1.1和1.4使用J2EE企业集成模式和许多先进的功能.

java多线程消息队列的实现

- - 编程语言 - ITeye博客
2、定义队列缓冲池最大消息数,如果达到该值,那么队列检入将等待检出低于该值时继续进行. 3、定义检出线程,如果队列缓冲池没有消息,那么检出线程会线程等待中. if(size==0){ //队列缓存池没有消息,等待. if(isIpLock(queueStr)){//假若这个是一个多应用的分布式系统,那么这个判断应该是分布式锁,这里说的锁不是线程停止,而是跳过该消息,滞后处理.

你可能并不需要消息队列

- - Java译站
我是一个极简主义者,我不喜欢过早或者没必要地让软件复杂化. 而往软件系统中添加组件就是严重增加复杂性的一种做法. 消息队列是一个能让你获得容错性,分布式,解耦等架构能力的系统. 或许消息列队在你的应用中有不少适用的场景. 你可以看下这篇关于消息队列优点的 文章,看看到底有哪些合适的场景. 但可不要因为说"能解耦那太好了”就轻易使用它.

用redis实现支持优先级的消息队列

- - 企业架构 - ITeye博客
用redis实现支持优先级的消息队列. 系统中引入消息队列机制是对系统一个非常大的改善. 例如一个web系统中,用户做了某项操作后需要发送邮件通知到用户邮箱中. 你可以使用同步方式让用户等待邮件发送完成后反馈给用户,但是这样可能会因为网络的不确定性造成用户长时间的等待从而影响用户体验. 有些场景下是不可能使用同步方式等待完成的,那些需要后台花费大量时间的操作.