史上最快 异步消息队列zeromq 简介 - 张沈鹏,在路上... - JavaEye技术网站

来源:百度文库 编辑:神马文学网 时间:2024/04/28 00:24:51

史上最快 异步消息队列zeromq 简介

文章分类:Java编程

是的,我喜欢Z开头的东西.

http://www.zeromq.org/

zeromq是一个基于内存的消息队列

是一个有着青春和朝气的项目,可惜网站被和谐了

高吞吐,低延时,超乎你的想象.
ØMQ is already very fast. We're getting 13.4 microseconds end-to-endlatencies and up to 4,100,000 messages a second today.

支持python,java,php,.net等各种语言

支持windows,linux和各种平台

zeromq性能很好,单纯的发简单的小文本消息和python的函数调用一样快(归功于他的本机服务).

在最新的版本中,加入了

April 8th, 2009: ØMQ/0.6 is available.
This version introduces load-balancing capabilities, on-disk offloadfor the large queues.

其中
on-disk offload for the large queues
这个特性的很让人喜欢的,可以避免内存被烧完.
(   更多细节见 http://www.zeromq.org/whitepapers:design-v06 )

给出一点代码演示

1.启动 zmq_server

nohup zmq_server --port 5300&
(默认端口是 5682)

2.发送请求端

import sys
from datetime import datetime
import libpyzmq
import time

z = libpyzmq.Zmq (host = "127.0.0.1:5300")

eid = z.create_exchange (
    name = 'EL',
    scope = libpyzmq.SCOPE_LOCAL,
    style = libpyzmq.STYLE_LOAD_BALANCING
)
z.bind ('EL', 'QG')

while True:
    z.send (eid, str(time.time()), True)
    time.sleep (1)

3.响应请求端
import libpyzmq
z = libpyzmq.Zmq (host = "127.0.0.1:5300")
z.create_queue (name = 'QG', scope = libpyzmq.SCOPE_GLOBAL,location="127.0.0.1:5350")
while True:
    print z.receive (True)


我们可以做一个实验,
在响应请求端运行到一半时,
中断这个程序
然后等一会在运行它.

我们可以发现,
消息没有丢失,
这要归功于伟大的zmq_server


4.SCOPE_GLOBAL的端口可以在一个配置文件中指定   
然后这样启动 zmq_server --config-file config.xml


   


然后程序中就可以不用写端口了

5.
本质上,
zmq_server是一个消息分发系统
创建一个exchange 然后往中queue写东西

data distribution的方式是每一个queue写一份数据
Load balancing的方式是轮训的写queue,只写一份苏洵《项籍》|备忘logrotate和supervise
  • 21:40
  • 浏览 (4023)
  • 评论 (4)
  • 分类: Python
4 楼hansir2009-12-10  引用把libpyzmq.a所在的目录加入到PYTHONPATH中就应该可以了。
setPYTHONPATH=/usr/local/zmq/site-packages

我正在准备在项目中使用0MQ,希望和大家探讨一下。

useless 写道cm2355 写道请教一个问题,我在Mac os下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib libpyzmq.la这三个文件,但是import libpyzmq总是报错“ImportError: No module namedlibpyzmq”,望解答,谢谢



也遇到这问题了,除了OS,错误完全一致。
CentOSx64, configure 时指定了 --prefix=/usr/local/zmq
安装完成后,site-packages 目录里也有libpyzmq.a  libpyzmq.dylib  libpyzmq.la 三个文件; import libpyzmq 报错"ImportError: No module named libpyzmq "..
3 楼useless2009-11-27  引用cm2355 写道请教一个问题,我在Mac os下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib libpyzmq.la这三个文件,但是import libpyzmq总是报错“ImportError: No module namedlibpyzmq”,望解答,谢谢



也遇到这问题了,除了OS,错误完全一致。
CentOS x64, configure 时指定了 --prefix=/usr/local/zmq
安装完成后,site-packages 目录里也有 libpyzmq.a  libpyzmq.dylib  libpyzmq.la三个文件; import libpyzmq 报错 "ImportError: No module named libpyzmq "..2 楼zuroc2009-05-17  引用不清楚
发邮件到他们的列表中问吧1 楼cm23552009-05-13  引用请教一个问题,我在Macos下安装zeromq,编译选项里已经加了--with-python
安装完成后,site-packages目录里也有libpyzmq.a  libpyzmq.dylib  libpyzmq.la这三个文件,但是importlibpyzmq总是报错“ImportError: No module named libpyzmq”,望解答,谢谢