zeromq java 怎么使用安装
推荐于2017-08-18 · 知道合伙人互联网行家
选择好安装路径。安装到计算机上。下来进行一些设置。首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“java_home”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而 java_home和classpath是不存在的。
首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”.
其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“% java_home%\bin;%java_home%\jre\bin”,(其中“%java_home%”的意思为刚才设置java_home的值),也可以直接写上“C:\jdk1.6\bin”
最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%java_home%\lib;%java_home%\lib\ tools.jar (要加.表示当前路径)”,与相同“%java_home%有相同意思”
以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。
确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了
还有在c盘下保存下面的代码,文件名为Myjava.java的文件。
public class Myjava{
public static void main(String args[]){
System.out.println("试试看,装好了吗?.");
}
}
进入cmd 打
c:
cd\
javac Myjava.java
java Myjava
如果出现 试试看,装好了吗?
就说明安装好了,可以用了
2017-04-26 · 口口相传的Java黄埔军校
二、编译ZeroMQ库文件
解压zeromq-4.0.3.zip文件,进入builds\msvc目录,用VS打开*.sln工程文件,编译生成解决方案。编译完成后,会在lib目录下生成dll和lib文件
三、编写简单的测试工程
用VS新建2个项目,一个是server端,一个是client端
将ZeroMQ源码项目的include目录下的两个文件“zmq.h”,“zmq_utils.h”拷贝至自己新建的工程
将ZeroMQ源码项目的lib目录下的两个文件“libzmq.dll”,“libzmq.lib”拷贝至自己新建的工程
将文件“zmq.h”,“zmq_utils.h”和“libzmq.lib”添加进自己新建的项目。
client端代码:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include "zeroMQ/zmq.h"
#include "zeroMQ/zmq_utils.h"
int main(int argc,char** argv)
{
//zeroMQ相关变量
void * m_context;
void * m_subscriber;
char m_pubAddr[64];
m_context = zmq_init (1);
m_subscriber = zmq_socket (m_context, ZMQ_SUB);
//订阅
char * puberIP = "127.0.0.1";
WORD puberPort = 8585;
memset(m_pubAddr,0,sizeof(m_pubAddr));
sprintf(m_pubAddr,"tcp://%s:%d",puberIP,puberPort);
//zmq_connect (m_subscriber, "tcp://localhost:5556");
zmq_connect (m_subscriber, m_pubAddr);
int ret = zmq_setsockopt (m_subscriber, ZMQ_SUBSCRIBE, NULL, 0);
while(1)
{
BYTE buf[1024] = {0};
DWORD buflen = sizeof(buf);
DWORD gotLen = zmq_recv(m_subscriber,buf,buflen,0);
printf("收到发布信息:%s\n",buf);
}
zmq_close (m_subscriber);
zmq_term (m_context);
return 0;
}
6.server端代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "zeroMQ/zmq.h"
#include "zeroMQ/zmq_utils.h"
int main(int argc,char** argv)
{
char pubLocalAddr[64] = {0};
sprintf(pubLocalAddr,"tcp://*:%d",8585);
//zeroMQ相关变量
void * m_context;
void * m_publisher;
m_context = zmq_init (1);
m_publisher = zmq_socket (m_context, ZMQ_PUB);
zmq_bind (m_publisher, pubLocalAddr);
char *msg = "1231321";
while(1)
{
DWORD sendlen = zmq_send(m_publisher,msg,strlen(msg),0);
printf("发布信息:%s\n",msg);
Sleep(1000);
}
zmq_close (m_publisher);
zmq_term (m_context);
return 1;
}
2017-06-29 · 上网学习,就来潭州!
ZeroMQ介绍
ZeroMQ是一个开源的消息队列系统,按照官方的定义,它是一个消息通信库,帮助开发者设计分布式和并行的应用程序。
首先,我们需要明白,ZeroMQ不是传统的消息队列系统(比如ActiveMQ、WebSphereMQ、RabbitMQ等)。ZeroMQ可以帮助我们建立自己的消息队列系统,它只是一个库。
ZeroMQ可以运行于带x86处理器或ARM处理器的机器上,支持40多种编程语言。
消息队列,从技术的角度来讲,是以先进先出FIFO算法为基础的队列技术,它有着良好的数据结构。除此以外,还有优先级队列、双端队列等队列技术。不管怎么样,其基本思想是把数据添加到队列中,接收端准备好以后,从队列中取回数据。
采用消息队列技术可以保证无论发生了什么,消息都会被交付到目的地。
消息队列允许松耦合的组件之间进行异步通信,还提供了坚实的队列一致性。如果资源不足,会阻止你立即处理发送的数据,你可以把消息放入消息队列服务器,由消息队列服务器来存储数据,直到目的地准备好接收消息。
消息队列在大规模分布式系统和异步通信中扮演着重要的角色。
ZeroMQ特征
1)ZeroMQ很简单
我们可以做异步I/O操作,ZeroMQ可以在一个I/O线程中把消息队列化。ZeroMQ的I/O线程是异步的,当处理网络交通时,它可以帮助我们完成很多剩余的工作。
2)ZeroMQ相当快
Second Life网站有13.4毫秒的端到端延时和高达每秒410万条消息的处理量。ZeroMQ能使用广播传输协议——它是把数据传输到多个目的地的好方法。
3)无代理设计
与其它传统的消息队列系统不同,ZeroMQ是无代理式的。传统的消息队列系统,通常都有中央消息服务器(Broker),每个节点都连接到这个中央节点,每个节点都通过中央节点与其它节点通信,而不是节点间彼此直接通信。
而ZeroMQ是无代理式的,应用程序彼此可以直接通信,无需通过中间代理Broker。
注意:ZeroMQ不会在磁盘上存储消息。但是,可以通过使用本地交换文件的方式存储消息。设置zmq.SWAP。
准备条件
OS:CentOS 6.5 x64
ZeroMQ:4.0.4版
安装ZeroMQ
1)下载ZeroMQ
执行命令:
$ wget http://download.zeromq.org/zeromq-4.0.4.tar.gz
2)解压ZeroMQ
$ tar zvxf zeromq-4.0.4.tar.gz
$ mv zeromq-4.0.4 zeromq
$ cd zeromq3)编译安装
$ ./configure
......
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/chuser/zeromq':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details提示缺少C编译器,先安装GCC。
$ sudo yum install gcc
安装OK!再次执行
$ ./configure
......
checking whether the C++ compiler works... no
configure: error: Unable to find a working C++ compiler提示缺少C++编译器,先安装G++。
$ sudo yum install gcc-c++
安装OK!再次执行
$ ./configure
$ make
$ sudo make install
2017-08-18
下面来回顾一下在linux安装zeromq的过程
首先
http://download.zeromq.org/
1.下载最新版的zeromq
http://download.zeromq.org/zeromq-3.1.0-beta.tar.gz
2 解压
tar -xvf zeromq-3.1.0-beta.tar.gz
3 运行configure
./configure --prefix=/data/zeromq (prefix 指定安装目录)
4. make
5. make install
6. 设置环境变量
export CPPFLAGS=-I/home/mine/0mq/include/
export LDFLAGS=-L/home/mine/0mq/lib/
7.测试代码
server.c
#######################################
#include </data/zeromq/include/zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main (void)
{
void *context = zmq_init (1);
// Socket to talk to clients
void *responder = zmq_socket (context, ZMQ_REP);
zmq_bind (responder, "tcp://192.168.0.185:5555");
printf("binding on port 5555.\nwaiting client send message...\n");
while (1) {
// Wait for next request from client
zmq_msg_t request;
zmq_msg_init (&request);
char buf[32];
zmq_recv (responder,buf, &request, 0);
int size = zmq_msg_size (&request);
char *string = malloc (size + 1);
memset(string,0,size+1);
memcpy (string, zmq_msg_data (&request), size);
printf ("Received Hello string=[%s]\n",string);
free(string);
zmq_msg_close (&request);
// Do some 'work'
sleep (1);
// Send reply back to client
zmq_msg_t reply;
char res[128]={0};
snprintf(res,127,"reply:%d",random());
zmq_msg_init_size (&reply, strlen(res));
memcpy (zmq_msg_data (&reply), res, strlen(res));
char buf2[32];
zmq_send (responder, buf2, &reply, 0);
zmq_msg_close (&reply);
}
// We never get here but if we did, this would be how we end
zmq_close (responder);
zmq_term (context);
return 0;
}
########################################################
#client.c
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
int main ()
{
void *context = zmq_init (1); // Socket to talk to server
printf ("Connecting to hello world server...\n");
void *requester = zmq_socket (context, ZMQ_REQ);
zmq_connect (requester, "tcp://192.168.0.185:5555");
int request_nbr;
for (request_nbr = 0; request_nbr != 10; request_nbr++)
{
zmq_msg_t request;
zmq_msg_init_data (&request, "Hello", 6, NULL, NULL);
printf ("Sending request %d...\n", request_nbr);
zmq_send (requester, &request, 0,0);
printf("send over") ;
zmq_msg_close (&request);
zmq_msg_t reply;
zmq_msg_init (&reply);
zmq_recv (requester, &reply, 0,0);
printf ("Received reply %d: [%s]\n", request_nbr, (char *) zmq_msg_data (&reply));
zmq_msg_close (&reply);
}
zmq_close (requester);
zmq_term (context);
return 0;
}
gcc server.c -o server -lzmq -L/data/zeromq/lib -I/data/zeromq/include
gcc client.c -o client -lzmq -L/data/zeromq/lib -I/data/zeromq/include
./server
./client