zeromq java用来怎么玩

打酱油震惊呵呵赞鄙视标签: ,,注:与内容无关的评论将被删除,严重者禁用帐号! | 最新评论不吐不快,赶紧来一发!栏目推荐热门点击本站推荐
| 中国最专业的PHP中文社区 |
Copyright (C) 1998 - . All Rights Reserved
第一PHP社区
版权所有 七牛云存储为本站提供加速支持 &&&&&zeromq用来怎么玩?
最近看了一本书《ZeroMQ:云时代极速消息通信库》,作者说那是更好用的socket,但感觉用起来相比其他稳定的网络库没有更简单,因为本身有一定的消息格式,所以主要用于集群内部,但是集群内部都可以用自己喜欢的库,因此觉得要使用zeromq的话需要投资一定学习时间并且看不到特别优势。。。请问应该怎么正确地玩zeromq?有没有非用一种消息队列不可的项目?
按投票排序
最近也在学ZeroMQ,先列一些前辈们的学习心得吧:
(这篇是繁体的,我用firefox的一个插件“同文堂”转换一下看。)然后这里说一下自己的一些体会:1. 首先弄明白0MQ中的“socket”和传统意义上socket的一些差异。我认为ZeroMQ不能算作单纯的socket库,它应该算是一个messaging library,一个“轻量级”的消息队列库(这里所说的“轻量级”是与过去一些企业级的消息队列对比而言的)。正如我前面列出的两个大神所说的:socket只是表现形式,而通信模式才是其本质。也就是说,在学0MQ的时候,不要把0MQ中的socket和系统本身的socket弄混。我们可以看看zmq_socket的文档: (zguide告诉我们,这份文档要时不时的拿出来要多读几遍)注意,每一种不同类型的“socket”,都有自己的消息模式。这其中包括该类型套接字可以和哪些套接字连接到一起工作啊(Compatible peer sockets)、消息传递的方向啊(Direction)、消息收发模式啊(Send/receive pattern)、还有Outgoing routing和Incoming routing用到的一些调度算法啊(比如:Round-robin、Fair-queued,这些调度算法在操作系统课程中应该会有涉及)。当我们创建一个0MQ套接字后,我们实际上得到的是一个加了各种特效的“socket”。上面一段话,我意在说明,0MQ中的“socket”没那么简单。借用@Dirk Chang答案中“模式”一词,0MQ实际上是把一些在实践中总结出来的消息通信模型封装成不同类型的套接字,以供我们使用。我认为,这个帖子中很好地阐明了0MQ中“socket”的含义:2.
我刚学0MQ的时候总是纠结于“客户端”、“服务端”的概念。比如REQ-REP模式中,究竟哪一端该作为客户端,那一端作为服务端呢?实际上,这也算是个小误区吧!因为我们不是在用传统TCP中的Server-client。在传统TCP中的Server-client中,server要先启动,然后bind到一个端口,等待client调用connect连接它。而0MQ中调用zmq_bind和调用zmq_connect的双方没有那么严格的先后顺序。这也是0MQ有趣的特性之一。直接引用zguide的中的文字吧:To create a connection between two nodes, you use zmq_bind()
in one node and zmq_connect()
in the other. As a general rule of thumb, the node that does zmq_bind()
is a "server", sitting on a well-known network address, and the node which does zmq_connect()
is a "client", with unknown or arbitrary network addresses. Thus we say that we "bind a socket to an endpoint" and "connect a socket to an endpoint", the endpoint being that well-known network address.Many architectures follow some kind of client/server model, where the server is the component that is most static, and the clients are the components that are most dynamic, i.e., they come and go the most. There are sometimes issues of addressing: servers will be visible to clients, but not necessarily vice versa. So mostly it's obvious which node should be doing zmq_bind()
(the server) and which should be doing zmq_connect()
(the client). It also depends on the kind of sockets you're using, with some exceptions for unusual network architectures.简而言之,这段话实际上在讲,在0MQ中,我们会用它提供的套接字构建一个messaging typology,我们通常认为server端应该是这个typology中比较稳定的组件,由这些比较稳定的组件来调用zmq_bind,而client则是比较动态的部分,它们来来去去,所以我们通常会调用zmq_connect将它们连接到这个typology中比较稳定的部分。比如,在0MQ中,我们会接触到messaging broker的概念,通常messaging broker会调用zmq_bind,作为服务端存在。3. 0MQ的一些特点(1) 速度快ZeroMQ的第一个特点就是速度快,这篇帖子中大致给了我们一个这样的概念:(2) 灵活首先,再推荐一位大婶的博客:0MQ提供的都是一些基本组件,它允许我们自己搭建自己的messaging typology。所以说,0MQ是很灵活的。本答案的第二个链接中提到,传统的消息队列中有一个“中央集权式”的messaging broker,该messaging broker通常会负责消息在各个节点之间的传输。而0MQ呢,用zguide中的话讲,就是:decentralized。你看,0MQ并不要求你的messaging typology中央必须是一个message broker(这个message broker可能作为消息的存储、转发中心)。在一些简单的通信模型中,省去message broker确实为我们省去了很多工作。而且我们也无需为message broker专门搭建一个服务器。我们也许会问,如果缺少了message broker,那么未及发送/接受的消息会不会丢失呢?不同担心。因为通常情况下,0MQ中一些套接字本身自带一个buffer,会把这些消息先存下来。但是ZeroMQ的去中心化不代表完完全全的去中心化。我认为,ZMQ把建立message broker的自由交给了我们。这样,我们可以在有需要的时候建立一个proxy,来简化网络的复杂性和维护城北。zguide中讲到的The Dynamic Discovery Problem、Shared Queue其实都是在教我们在不同场景下应该怎样建立一个broker来降低网络的复杂性而提升其灵活性。而且,对于一个复杂的消息拓扑,“各自为政”(见:)会可能需要在加入新的节点时重新配置消息拓扑(这会在什么情况下发生,具体可以参考zguide中在介绍The Dynamic Discovery Problem、Shared Queue时引入的例子)。zguide中描述The Dynamic Discovery Problem这个问题时,拿PUB-SUB模式来举例,说明了使用中间件可以降低两两互联网络的维护成本。中间件的引入使网络更加灵活,因而增加新的节点更加简单。如果不采用中间件,则每次增加新的节点时(比如增加一个新的PUB节点),要重新配置该新节点和现有其他节点之间的关系(比如,把刚才新增的PUB节点和所有现有的SUB节点相连)。再引用一段zguide中的文字:You might wonder, if all networks eventually get large enough to need intermediaries, why don't we simply have a message broker in place for all applications? For beginners, it's a fair compromise. Just always use a star topology, forget about performance, and things will usually work. However, message broke in their role as central intermediaries, they become too complex, too stateful, and eventually a problem.我们通过往网络中加入中间件的方法来降低网络的复杂性,这是一个比较普遍的需求。然而ZMQ并没有因该需求的普遍性而在库中内置形如message borker这样的中间件。该段话阐述了ZMQ这样做的原因:中间件本身是违背ZMQ“去中心化”的设计思想的,而且中间件会变得很复杂。所以,ZMQ把构建中间件的自由给了我们。而且,用ZMQ实现形如message broker这样的消息中间件并不复杂。通过上面这些讨论,可以看出ZeroMQ极其灵活性(而我们要很好地掌握这种灵活性,需要花些功夫:了解最基本的消息模式、了解彼此之间如何组合起来构建更复杂的消息传递网络拓扑。)(3) 方便上面提到,0MQ中socket被加了各种特效,所以,我们要实现一些功能的时候,比如:并发、load-balancing,我们需要做的是使用正确的套接字及构建正确的messaging typology。4. 我认为使用0MQ能带来的好处(实际上,这段主要得益于公司的一位前辈的指导)(1) 跨语言变得简单。假设,我们有一个模块是用C++实现的,需要提供给另外一个C#/Java/Python/……应用来调用,过去我们可能会使用“C#嵌入C++”/“Java内嵌C++”形如这样的黑科技来实现。但是呢,现在,我们可以用0MQ来实现这种通信。因为0MQ为各种主流语言都提供了bindings。(2) 模块间的解耦这里提一下阿里做的RocketMQ。而且,看一下这个issue:我们可以看到,很多人拿RocketMQ来做模块间的解耦。PS:阿里还提供了和阿里云结合的RocketMQ。(3) 插件化假设我们在实现一个数据采集、处理系统。数据的处理可能会有多步(比如:A、B、C步),通过0MQ我们可以把每一步处理工作都写成一个模块,类似于插件。这样,传给一个平台的数据可能只需要经过A、C两步,传给另一个平台的可能需要A、B、C三步。各个步骤之间通过0MQ传输数据。这样,当我们想增加新的处理步骤的时候,只需要再写个模块,并加入处理流程就行了。(4) 并行、负载均衡0MQ的并行、负载均衡都已经存在于其基因中了。zguide中有这么一段文字:Multithreading with ZeroMQTo make utterly perfect MT programs (and I mean that literally), we don't need mutexes, locks, or any other form of inter-thread communication except messages sent across ZeroMQ sockets.If you've spent years learning tricks to make your MT code work at all, let alone rapidly, with locks and semaphores and critical sections, you will be disgusted when you realize it was all for nothing. If there's one lesson we've learned from 30+ years of concurrent programming, it is: just don't share state. It's like two drunkards trying to share a beer. It doesn't matter if they're good buddies. Sooner or later, they're going to get into a fight. And the more drunkards you add to the table, the more they fight each other over the beer. The tragic majority of MT applications look like drunken bar fights.我认为,值得深思。你看,学了0MQ,我们的程序设计思路(思考模式)在发生着变化。5. 一些八卦github上libzmq的第一贡献者:是这位大婶:而zguide的作者,以及libzmq目前主要维护者,是这位大婶(iMatix CEO):据不负责任传言,他们本是一家,后来意见发生分歧,前者就出走,另立项目:Crossroads I/O:后来,Crossroads I/O挂掉之后,前者重写一个项目:。这个PPT透露出了个中八卦,以及zeromq和nanomsg之间的一些差别(其中提到0MQ中“0”的奥义): 里边插入了奇怪的照片。还有一个有趣的问题是,sustrik曾说当年选用C++实现libzmq是一个“美丽的”错误(“美丽的”是我加的)所以你看,nanomsg就是用C实现的了。另,nanocat貌似不错。不过不知道nanomsg示例是否丰富、文档是否全。相信学了ZeroMQ,nanomsg也很容易上手。6. 一些资源(1) zguide官网上的只是文档里面有各种语言的示例。(2) zguide-cn这是国内的大婶翻译的,不过好久没更新了。如果一些术语实在不知道啥意思,不妨翻阅一下,和英文版的zguide对比阅读。(3)这本书的第一部分就是zguide中的内容,第二部分更偏向实践应用。(4)ZeroMQ源码分析。orz。
你就说不比哪个网络库简单吧
用过一段时间,基本上只用到了发布发布订阅(见鬼,linux 下搜狗打不出yue,还是个bug),用这个玩意儿实现了一个简单的应用框架,不同的功能模块通过zmq进行数据的共享,还挺方便的。如果使用发布订阅,高水位是一个非常隐晦的设置参数(发布者的接收高水位必须大于接收者的订阅数量,否则接收方会收不到,非常坑爹,文档没有任何地方提到这个特性,猜测是高版本下,将过滤放在发布方导致的,因为在内部处理中订阅方要发送订阅信息给发布方)再有一个不好就是 context 的概念,及其恶心,作者估计也被恶心的够呛,所以才在 nanomsg 中去掉了这一概念,封装的更加友好了。热切期待 nanomsg 不想再用zmq 了。
建议也了解一下原作者新重新实现的nanomsg
zeromq我学了两个晚上用起来了,现在还有子服务在用...跑了两年多了...当然我只是用了request/reply这一种模式,其他的按照sample试了下而以...没深入过
通道到模式的思考方式的变化
我用ROTER、DEALER模式实现了一个使用订阅发布模式的消息总线……通过特地通讯协议,还能定向推送消息……并且支持多个消息总线之间互相订阅……总之就是一个很自由的通讯框架了……当然,订阅发布的逻辑是自己实现的…定义了一种很原始的通讯协议实现的……怎么说呢…经过一次不严谨的测试,竟然比原生的订阅发布效率要高……(当然,很不严谨。局域网内100台机器订阅相同的消息,进行三维模型的运动同步显示……)嗯,基本上还是挺不错的,就是之前没优化消息,网络占用率100%了……二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
关注海量数据存储、处理和检索,MySQL,系统运维,图像处理等技术
LOFTER精选
网易考拉推荐
zmq和jzmq在window32位或64位环境下编译并使用&&
11:42:19|&&分类:
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
环境要求1.安装了jdk(请选择对应的是32位版本还是64位版本)且设置了对应的环境变量,能够正确在cmd中执行javac命令2.window环境中安装了msvc2008或更新版本zeromq的编译zeromq官方提供了已编译好的对应的installer版本下载,包含32位和64位。但是在使用时会遇到许多问题,故无论是使用zeromq还是通过zeromq库去编译jzmq,最好都是自己去编译一下zeromq。编译方法如下:编译步骤:1.登录http://www.zeromq.org/area:download下载window的源码包2.下载好源码包后用msvc打开builds\msvc\msvc.sln3.编译即可。注意这里有个小坑,3.2.2版本在编译中会抛出errorno.cpp文件找不到等异常,并导致编译失败,比较奇怪。这时候可以在libzmq工程目录下Source Files中找到errorno.cpp文件,双击后发现msvc也无法打开它,难道这个文件本身不需要?直接删除这个文件,再次编译,通过。4.编译好的库会放在lib子目录中。jzmq的编译要在windows下使用jzmq就更悲催了。官方居然没有提供已编译好的window版本,只给出了源码和编译步骤。这样只能自己编译。jzmq编译也分windows32位和64位两个版本。编译方式也不同特别是window64位版本的编译,你用官方的方法一定编译不过。下面具体讲讲在编译中遇到的问题和处理方式。jzmq的windows32位版本的编译:1.下载源码包:git clone /zeromq/jzmq.git2.用msvc打开builds\msvc\msvc.sln进入jzmq工程3.配置工程依赖路径:msvc2008配置在:Tools|Options|Projects and Solutions|VC++ Directories|Include files。2008后期后期版本略有不同,在对应的工程下,点击右键进入属性后找到VC++目录做对应操作即可。路径设置参考:Include files:& & &jdk&\include\win32& & &jdk&\include& & &zeromq&\includeLibrary files:& & &zeromq&\lib4.编译即可。注意这里有个小坑:如果你使用的是官方已打包好的zeromq库进行编译,下载对应的依赖库名称是类似libzmq-v90-mt-3_2_2.dll(或lib)而非libzmq.dll(或lib)。这是你要将名称替换成libzmq.dll,libzmq.lib。这样才能编译通过。jzmq的windows64为版本的编译:1.下载jzmq源码:git clone /zeromq/jzmq.git2.另外还需要下载cmake for window(注意官方没有说选择32位还是64位版本,但实际上这只是个编译中间工具,32位版本亦可,无需刻意寻找对应的64位版本,官方也没提供):http://www.cmake.org/cmake/resources/software.html3.在jzmq源码目录中创建一个新目录:build64(官方在步骤3中说Insert attached CMakeLists.txt,下载这个文件并覆盖到jzmq根目录。注意千万别这么做,那个CMakeLists.txt是很老的版本了。不适用现在的环境了。好大个坑。实际上你无需替换任何CMakeLists.txt文件)4.在build64目录中cmd运行D:\Microsoft Visual Studio 11.0\VC\bin\amd64\vcvars64.bat(请换成你机子上msvc对应目录。又是个大坑,官方居然没有这一步,cmd没有通过该步设置对应的环境变量后续即使能工作都是错误的)5.不要关闭cmd,再运行cmake .. -G "NMake Makefiles"6.完成后再cmake-gui .打开cmake图形界面,设置CMAKE_BUILD_TYPE为Release,然后分别点击Configure,Generate7.指定编译的include和lib(官方又没提该步,如果不熟悉nmake的话后续操作会比较困惑)请换成你机子上msvc对应目录,注意libzmq.dll也需要64位版本,可在http://miru.hk/archive/ZeroMQ-3.2.2rc2~miru1.5-x86.exe下载编译好的版本。然后进入lib目录下把任意一个lib版本换成libzmq.lib,这样编译器才能够识别。如libzmq-v110-mt-3_2_2.lib换成libzmq.lib。cmd脚本例子如下:set INCLUDE=%INCLUDE%;F:\zmq\zeromq-3.2.2\D:\jdk\D:\jdk\include\win32set LIB=%LIB%;F:\zmq\zmq8.最后运行nmake生成对应库文件。(可选)如果你安装了NSIS的话可以运行nmake package让它生成可安装文件使eclipse能够使用jzmq在使用jzmq时可能也会遇到一些问题,这里提供了一些解决方案可参考。首先确保run-&run configurations-&arguments-&VM arguments下指定了libraray path,如:-Djava.library.path=E:\cfg\lib\win64。由于jzmq.dll同时又依赖libzmq.dll,而dll与dll之间的依赖是通过system path关联的,所以还需要将libzmq.dll放在system path环境变量中。如果eclipse运行Can't find dependent libraries出现问题,请按如下方式依次检查:1.确保libzmq.dll已放入了system path环境变量中?可通过打开cmd后输入where libzmq.dll检查2.eclipse是否重启?如果system path环境变量变更,需要重启eclipse后eclipse才能识别3.如果还是不行,从/下载dependencywalker小工具,600k左右,它能够查看window模块(exe,dll,sys等)依赖的模块有哪些,使用非常简单。通过它检查jzmq.dll模块具体依赖了哪些模块,在系统环境变量中补上缺失的模块即可
阅读(1498)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'zmq和jzmq在window32位或64位环境下编译并使用',
blogAbstract:'zmq和jzmq目前官方没有提供已编译好的文件供下载,git上的也只有很老的(2.0)版本。由于在开发过程中都使用的windows系统,所以在windows下能够使用jzmq对开发和调试系统来讲都会很方便。但是,通过官方网站上的介绍在windows下安装zmq3.2.2版本会有许多问题,有各种坑,且网上相关资料缺乏。笔者经过不断的尝试终于成功的在windows下编译和使用了jzmq,这里把windows通过编译安装zmq和jzmq的方式整理并记录了下来,以便需要的人能够参考。环境要求1.安装了jdk(请选择对应的是32位版本还是64位版本)且设置了对应的环境变量,能够正确在cmd中执行javac命令',
blogTag:'zmq,java,消息队列',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:7,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'关注海量数据存储、处理和检索,MySQL,系统运维,图像处理等技术',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}gozmq的安装与使用教程(zeromq分布式消息队列+golang) | 学习笔记一、环境搭建
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
sudo make install
git clone /nathanmarz/jzmq.git
./autogen.sh
./configure
sudo make install
如果没有安装libtool、libuuid-devel则需要先安装,否则安装失败
yum install libtool
yum install libuuid-devel
常见问题:
出现java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory异常
原因是未找到zmq动态链接库。
解决方法1:export LD_LIBRARY_PATH=/usr/local/lib
解决方法2:编辑/etc/ld.so.conf文件,增加一行:/usr/local/lib。再执行sudo ldconfig命令
Exception in thread &main& java.lang.UnsatisfiedLinkError: no jzmq in java.library.path
未设置native library
在eclipse设置native library为/usr/local/lib
或在jvm增加参数
-Djava.library.path=/usr/local/lib
或在启动脚本中增加
java -Djava.library.path=/usr/local/lib
二、使用jzmq进行编程
1.创建maven项目,pom.xml的内容参见pom.xml
注意:jzmq的版本不能太高,建议使用2.1.0,目前storm也是使用这个版本的jzmq-2.1.0.jar
否则报: java.lang.UnsatisfiedLinkError: org.zeromq.ZMQ$Socket.nativeInit()V
2.编写Publisher.java,Subscriber.java,参见源代码
Publisher.java
com.catt.mqtest.
org.slf4j.L
org.slf4j.LoggerF
org.zeromq.ZMQ;
org.zeromq.ZMQ.C
org.zeromq.ZMQ.S
Publisher {
// 等待10个订阅者
SUBSCRIBERS_EXPECTED =
// 定义一个全局的记录器,通过LoggerFactory获取
Logger log = LoggerFactory.getLogger(Publisher.
main(String[] args)
InterruptedException{
Context context = ZMQ.context(
Socket publisher = context.socket(ZMQ.PUB);
publisher.bind(
&tcp://*:5557&
// zmq发送速度太快,在订阅者尚未与发布者建立联系时,已经开始了数据发布
Thread.sleep(
(InterruptedException e) {
e.printStackTrace();
publisher.send(
&send start......&
.getBytes(),
publisher.send((
&Hello world &
+i).getBytes(), ZMQ.NOBLOCK);
publisher.send(
&send end......&
.getBytes(),
publisher.close();
context.term();
Subscriber.java
com.catt.mqtest.
org.slf4j.L
org.slf4j.LoggerF
org.zeromq.ZMQ;
org.zeromq.ZMQ.C
org.zeromq.ZMQ.S
Subscriber {
// 定义一个全局的记录器,通过LoggerFactory获取
Logger log = LoggerFactory.getLogger(Subscriber.
main(String[] args) {
Context context = ZMQ.context(
Socket subscriber = context.socket(ZMQ.SUB);
subscriber.connect(
&tcp://192.168.230.128:5557&
subscriber.subscribe(
.getBytes());
[] stringValue = subscriber.recv(
String string =
String(stringValue);
(string.equals(
&send end......&
System.out.println(
&Received &
& updates. :&
+ string);
subscriber.close();
context.term();
&http://maven.apache.org/POM/4.0.0&
&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation
&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&
modelVersion
modelVersion
&com.catt&/
artifactId
artifactId
&0.0.1-SNAPSHOT&/
&http://maven.apache.org&/
properties
project.build.sourceEncoding
project.build.sourceEncoding
properties
dependencies
dependency
&org.zeromq&/
artifactId
artifactId
dependency
dependency
&ch.qos.logback&/
artifactId
&logback-classic&/
artifactId
dependency
dependency
artifactId
artifactId
dependency
dependencies
相关 [zeromq jzmq 编程] 推荐:
- 编程语言 - ITeye博客
如果没有安装libtool、libuuid-devel则需要先安装,否则安装失败. 出现java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory异常 .
- heiyeluren的blog(黑夜路人的开源世界)
最初认识 ZeroMQ 是被它的名号所吸引,最近在一个高性能中间件的项目中用到了 ZeroMQ,对这个号称“史上最快的消息队列”有了更深层次的了解. 如果我们仅仅把 ZeroMQ 看作是一个消息队列,那就完全搞错了,ZeroMQ 是一套智能传输层协议,它不仅为开发者提供了强大的开发包,还包含了一套很棒的通信协议的实现,更值得一提是,它对分布式系统开发有着相当独到的见解,绝对值得我们好好学习.
- CSDN博客架构设计推荐文章
基本上ZeroMQ(java)中基本的代码都算是过了一遍了吧,不过觉得它在日志这一块貌似基本没有做什么工作,也就是我们通过日志来知道ZeroMQ都发生了什么事情. 而且由于ZeroMQ中将连接的建立和重连接都进行了隔离,用户不需要做什么事情来维护连接,当然这样做的好处是使程序员的编码工作变少了,但是当然也有不好的地方,那就是用户失去了对ZeroMQ整个运行阶段的控制.
- 乾 - heiyeluren的blog(黑夜路人的开源世界)
来源:/2011/02/zeromq/ . ZeroMQ是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了. 从网络通信的角度看,它处于会话层之上,应用层之下,有了它,你甚至不需要自己写一行的socket函数调用就能完成复杂的网络通信工作.
- CSDN博客架构设计推荐文章
自己最开始是在cloud foundry中接触过消息服务器(nats),或者说是消息中间件,也算是初步知道了一个消息服务器对于分布式的网络系统的重要性,后来自己也曾想过在一些项目中使用它,尤其是在一些分布式的环境下,可以极大的方便整个系统的实现. 在中间通过一个消息中间件,可以很方便的将各个woker的数据发送到最终的统计服务器来做数据的统计,从而减少很多在网络通信中会消耗的编程时间.
- Shengbin - codedump
阅读过zmq的代码之后,感觉这个网络层是我目前见过最高效的–线程之间使用lockfree的消息队列保存消息,可以启动多个I/O线程分担压力等等特性.于是决定基于它写一个protobuf RPC的框架.. 另外,这里使用的protobuf是旧版本2.3.0,新版本2.4.1的生成的RPC service接口跟原来不太一致,暂时还没有去研究它.BTW,升级版本之后导致原来的接口发生变化这是一个很操蛋的事情..
- 博客 - 伯乐在线
开始前我要先做个澄清:这篇文章同Linus Torvalds这种死忠C
程序员吐槽C++的观点是不同的. 在我的整个职业生涯里我都在使用C++,而且现在C++依然是我做大多数项目时的首选
编程语言. 自然的,当我从2007年开始做
ZeroMQ项目主页)时,我选择用C++来实现.
- haohtml's blog
RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢. 下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了. RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队.
- 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.
- 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。}

我要回帖

更多关于 zeromq官网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信