上文介绍了rabbitmq在linux下的安装,这里就简单的介绍一下基于rabbitmq的开发。
rabbitmq是一个分布式的消息中转服务器,其中最核心的api class是Conncetion 和channel, 代表一个连结和一个数据通道。分布式的消息服务器肯定是要有client和server的。那怎么基于rabbitmq构建一个server呢?
ConnectionFactory factory = new ConnectionFactory(); factory.setUsername(userName); factory.setPassword(password); factory.setVirtualHost(virtualHost); factory.setHost(hostName); factory.setPort(portNumber); Connection conn = factory.newConnection();
or
ConnectionFactory factory = new ConnectionFactory(); factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost"); Connection conn = factory.newConnection();
上述的代码,创建了一个connnection,开发者可以在一个connnection创建多个channel,channel用于传递、接收消息。
Channel channel = conn.createChannel();
channel使用完毕后要关闭
channel.close();
conn.close();
另外,获取connection时候,consumer线程默认自动分配一个 ExceutorService thread pool,如果你需要自己控制线程池的。你可以如下定义:
ExecutorService es = Executors.newFixedThreadPool(20);
Connection conn = factory.newConnection(es);
但是需要注意的是:当connection shutdown的时候,默认分配的ExecutorService会自动shutdown,用户自己定义的不会shutdown,需要手动shutdown。而且,只用在Consumer回调有严重的性能瓶颈的时候才用这种方式,在平常的使用中,默认的分配更加高效。
rabbitmq用于分布式系统,布布扣,bubuko.com
原文:http://www.cnblogs.com/babybluevino/p/3650008.html