之前项目中间层和前端,服务器之间数据都是通过doPost方法传递Json,最近看了一下rabbitMQ和protoBuff,觉得很不错,可以取代项目中的数据传递部分。它们的优点我就不介绍了,此处简单整合下,以备不时之需。准备工作:
1、本次实验环境:window 10,eclipse
2、所需文件:
a) protoc.exe
b) protobuf-java-2.4.1.jar (注意两个文件的版本要对应起来,jar可以通过maven添加到项目,此处不过过多赘述。)
c) erlang,下载地址:http://www.erlang.org/download/otp_win32_R15B.exe ,下载好自行安装好
d) RabbitMQ, 下载地址 http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.4/rabbitmq-server-3.3.4.exe ,下载好自行安装,安装完成默认是启动的。在cmd下进入安装目录下的sbin文件夹,运行rabbitmq-server start 。如果报node with name "rabbit" already running on "XXX" 。可以进入window 服务中停止rabbitMQ服务,然后重启即可。
e) rabbitmq-java-client-bin-3.5.4.zip,下载地址 http://www.rabbitmq.com/releases/rabbitmq-java-client/v3.5.4/ ,下载好解压备用准备工作做好后开始写代码。 新建TestProto.proto文件和protoc.exe 放在同一目录下。TestProto.proto文件内容如下:
package protobuf;
option java_package = "com.test.protobuf";
option java_outer_classname = "TestProtobuf";
message Info {
required int32 ID = 1;
required string title = 2;
required string content = 3;
}
在cmd环境下进入protoc.exe所在的文件夹下 运行 protoc ./TestProto.proto.proto --java_out=./
运行后进入protoc.exe文件夹,可以发现多了com\test\protobuf\TestProtobuf.java
eclipse 新建Maven项目Rabbit,在pom.xml文件中个添加依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.4.1</version>
</dependency>
在项目根目录新建lib文件夹,把 rabbitmq-java-client-bin-3.5.4.zip 中的rabbitmq-client.jar文件拷贝到lib中,然后add to buildpath(在maven中添加时,接口总和手册上的对不上,故手工添加)。把生成的TestProtobuf.java拷贝到项目中,并且新建send类和receive类。项目的组织结构如下图
send类如下:
receive类如下:
运行send ,结果如下:
运行receive,结果如下:
为了看的清晰,receive类我放在了myeclipse里运行,这样可以看到发送和接收的过程。
简单的整合完毕。