首页 > 其他 > 详细

RabbitMQ 入门

时间:2014-03-13 22:39:44      阅读:668      评论:0      收藏:0      [点我收藏+]
简介
 
RabbitMQ是一个Message Broker,核心思想就是接受消息,转发消息。
实现的协议:AMQP。
 
术语(Jargon)
 
P,Producing,制造和发送信息的一方。
Queue,消息队列。
C,Consuming,接收消息的一方。
 

Simple Demo
 
bubuko.com,布布扣
发送方
 
bubuko.com,布布扣
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
 
    channel.queueDeclare(QUEUE_NAME, false, false, false, null); //(如果没有就)创建Queue
    String message = "Hello World!";
    channel.basicPublish("", QUEUE_NAME, null, message.getBytes());//以byte的方式发布
    System.out.println(" [x] Sent ‘" + message + "‘");
 
    channel.close();
    connection.close();
bubuko.com,布布扣

 

接收方
 
bubuko.com,布布扣
    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
 
    channel.queueDeclare(QUEUE_NAME, false, false, false, null);//看一下Queue是否存在
 
    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(QUEUE_NAME, true, consumer);
 
    while (true) {
      QueueingConsumer.Delivery delivery = consumer.nextDelivery();//阻塞,直到接收到一条消息
      String message = new String(delivery.getBody());
      System.out.println(" [x] Received ‘" + message + "‘");
    }
bubuko.com,布布扣

 

 

订阅/发布Demo
 
发送消息给多个订阅者
核心思想:消息发送给exchange,每个接收方创建匿名Queue绑定到exchange,exchange发送消息给每个接收方。
 
Exchanges
 
在RabbitMQ完整的模型中,消息只能发送给一个exchange。
exchange一方面接收消息,另一方面push给queues。
 
bubuko.com,布布扣
exchange类型
> rabbitmqctl list_exchanges
direct
topic
headers
fanout 广播消息给已知队列
 
bubuko.com,布布扣
发送方
 
bubuko.com,布布扣
String EXCHANGE_NAME = "logs";
 
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// 设置 exchange 类型
channel.exchangeDeclare(EXCHANGE_NAME /*exchange名称*/, "fanout"/*类型*/);
// 发布消息时,指定 exchange 名称
channel.basicPublish( EXCHANGE_NAME , "", null, message.getBytes());
channel.close();
connection.close();
bubuko.com,布布扣

 

 
接收方(可多个同时运行)
 
bubuko.com,布布扣
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// 设置exchange名称和类型
channel.exchangeDeclare(EXCHANGE_NAME, "fanout");
// 创建一个临时的、带有随机名称的Queue,用来与 exchange 绑定
String queueName = channel.queueDeclare().getQueue();
hannel.queueBind(queueName, EXCHANGE_NAME, ""); // 绑定
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, consumer);
while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received ‘" + message + "‘");
 }
bubuko.com,布布扣

 

 

Install
 
@Windows
1 先安装Erlang。
2 官方网下载 .exe。
 

管理
 
命令行管理
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
 
WebUI管理
> rabbitmq-plugins enable rabbitmq_management
重启后访问 http://localhost:15672/
guest,guest
 
角色
management
policymaker
monitoring
administrator
 
添加用户并分配角色
> rabbitmqctl add_user name pass
> rabbitmqctl set_user_tags name administrator
 
插件管理
启用插件
> rabbitmq-plugins enable plugin-name
 
 
配置文件
etc\rabbitmq.config
 

Refs
 

RabbitMQ 入门,布布扣,bubuko.com

RabbitMQ 入门

原文:http://www.cnblogs.com/caca/p/rabbitmq_demo.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!