RabbitMQ 学习记录

本文介绍了RabbitMQ的安装配置步骤,包括管理插件启用、账户管理及权限设置,并详细阐述了如何集成STOMP协议实现浏览器通过WebSocket访问RabbitMQ。此外还概述了RabbitMQ的基本组件如Broker、Exchange、Queue等的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://blog.youkuaiyun.com/seven_coder/article/details/50946562

1、安装管理插件:rabbitmq-plugins enable rabbitmq_management

2、查看默认的账户列表信息(输入:rabbitmqctl.bat  list_users)

-------uname  :用户名 ------------

3、新增账户:rabbitmqctl.bat add_user  uname   upwd

4、赋予管理员身份:rabbitmqctl.bat set_user_tags  uname  administrator

5、 授予管理员权限:(输入:rabbitmqctl.bat set_permissions -p /  uname ".*" ".*" ".*")

6、启用stomp 插件  rabbitmq-plugins enable rabbitmq_stomp

7、springboot 中引用rabbitmq 

参考:http://www.jianshu.com/p/da1befae642e

8、rabbitmq 与stomp 协议使用

参考:http://www.rabbitmq.com/stomp.html

 

RabbitMQ使用场景练习:STOMP plugin

 Stomp是一个简单的消息文本协议(不重点介绍,没仔细研究过)。RabbitMQ中STOMP plugin的集成,实现了由浏览器通过WebSocket协议访问消息队列,SockJS作为后备(旧版的浏览器不支持WebSocket协议) 

  1. rabbitmq-plugins enable rabbitmq_web_stomp  
  2. rabbitmq-plugins enable rabbitmq_web_stomp_examples  

// Stomp.js boilerplate
    var ws =  new WebSocket('ws://127.0.0.1:15674/ws'); 
    /*if (location.search == '?ws') {
         ws = new WebSocket('ws://127.0.0.1:15674/ws');
    } else {
        ws = new SockJS('http://127.0.0.1:15674/stomp');
    }*/ 
    // Init Client
    var client = Stomp.over(ws);
    // SockJS does not support heart-beat: disable heart-beats
    client.heartbeat.outgoing = 0;
    client.heartbeat.incoming = 0;
    // Declare on_connect
    var on_connect = function(x) { 
        client.subscribe("/exchange/fanoutExchange", function(d) { 
            alert(d.body);  
        });
    };
    // Declare on_error
    var on_error = function() {
        console.log('error');
    };
    // Conect to RabbitMQ
    client.connect('zhouchen', 'a123456', on_connect, on_error, '/');

参考:http://blog.youkuaiyun.com/azhegps/article/details/53815283

 

详细关键字说明:

1.Broker

简单来说就是消息队列服务器的实体。

2.Exchange

接收消息,转发消息到绑定的队列上,指定消息按什么规则,路由到哪个队列。

exchange 存在以下几种类型:

1).Direct exchange

Direct exchange 完全根据 key 进行投递,只有 key 与绑定时的 routing key 完全一致的消息才会收到消息,参考官网提供的图 4 更直观地了解 Direct exchange。

图 4.Direct exchange

图 4.Direct exchange

2).Fanount exchange

Fanount 完全不关心 key,直接采取广播的方式进行消息投递,与该交换机绑定的所有队列都会收到消息,具体参考官网提供的图 5。

图 5.Fanount exchange

图 5.Fanount exchange

3).Topic exchange

Topic exchange 会根据 key 进行模式匹配然后进行投递,与设置的 routing key 匹配上的队列才能收到消息。*.routing.*  ,   routing.#   

*号:表示单个值    

#号 : 标识多个值

4).Headers exchange

Header exchange 使用消息头代替 routing key 作为关键字进行路由,不过在实际应用过程中这种类型的 exchange 使用较少。

3.Queue

消息队列载体,用来存储消息,相同属性的 queue 可以重复定义,每个消息都会被投入到一个或多个队列。

4.Binding

绑定,它的作用就是把 Exchange 和 Queue 按照路由规则绑定起来。

5.RoutingKey

路由关键字,Exchange 根据这个关键字进行消息投递。

6.Producter

消息生产者,产生消息的程序。

7.Consumer

消息消费者,接收消息的程序。

8.Channel

消息通道,在客户端的每个连接里可建立多个 Channel,每个 channel 代表一个会话。

转载于:https://my.oschina.net/u/2988090/blog/1505736

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值