参考: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协议)
- rabbitmq-plugins enable rabbitmq_web_stomp
- 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
2).Fanount exchange
Fanount 完全不关心 key,直接采取广播的方式进行消息投递,与该交换机绑定的所有队列都会收到消息,具体参考官网提供的图 5。
图 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 代表一个会话。