ThreadPoolExecutor + RabbitMQ

对于一个基于消息驱动的应用,线程池和消息队列总是少不了的。线程池ThreadPoolExecutor是Java自带的,利用线程池来生产/消费消息。消息队列有很多选择,这里先尝试一下RabbitMQ

1,安装RabbitMQ服务

yum install erlang

yum install rabbitmq-server

因为RabbitMQ是Erlang开发的,故安装过程将安装一些Erlang环境

2,配置RabbitMQ服务

一般RabbitMQ的默认配置即可工作,如需个性化设置可以参考

RabbitMQ默认服务端口为5672,需要在防火墙中将此端口开放,以免其他机器上的client无法访问

3,RabbitMQ服务

service rabbitmq-server start

service rabbitmq-server stop

RabbitMQ服务的管理可以参考

4,下载RabbitMQ的Java client包

5,编写测试程序

略......

6,测试结果

Consumers和Products分别跑在同一WLAN网络中不同机器上,利用线程池起了4对Consumer/Product,每对Consumer共产生/消费100W条消息(消息长度约56字节)

通过400W条消息来测试一下RabbitMQ的稳定性和性能

Product0 cost : 981.517

Product1 cost : 993.353

Product3 cost : 1008.149

Product2 cost : 1010.612

RabbitMQ真的蛮简单,I like it!

经验分享 程序员 微信小程序 职场和发展