新人学习笔记,有错欢迎交流指出~~
发现问题:
安装好Erlang、rabbitmq客户端后,启用插件rabbitmq-plugins enable rabbitmq_web_stomp后无法访问http://localhost:15674/stomp/info,在百度了许久后还是无法解决这个访问的问题,一度以为自己的stomp通道没有建立成功
解决办法:
后来,仔细研究了一下,通过stomp.html来访问获取队列中的消息,测试通讯功能,附上代码
<!DOCTYPE HTML>
<html>
<head>
<title>My WebSocket</title>
</head>
<body>
Welcome<br/>
</body>
<script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.js"></script>
<script src="https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.js"></script>
<script type="text/javascript">
if (typeof WebSocket == 'undefined') {
console.log('不支持websocket')
}
// 初始化 ws 对象
//var ws = new WebSocket('ws://本机ip:15674/ws');#ip隐藏大法
var ws = new WebSocket('ws://127.0.0.1:15674/ws');
// 获得Stomp client对象
var client = Stomp.over(ws);
// SockJS does not support heart-beat: disable heart-beats
//client.heartbeat.outgoing = 0;
//client.heartbeat.incoming = 0;
//client.debug = pipe('#second');
// 定义连接成功回调函数
var on_connect = function(x) {
//data.body是接收到的数据
client.subscribe("/queue/queue1", function(data) {
var msg = data.body;
alert("收到数据:" + msg);
});
};
// 定义错误时回调函数
var on_error = function() {
console.log('error');
};
// 连接RabbitMQ
client.connect('guest', 'guest', on_connect, on_error, '/');
console.log(">>>连接上http://localhost:15674");
</script>
</html>
注释部分:
1.以下部分是测试浏览器是否支持websocket,一般浏览器应该都支持。
WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议, 例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome
if (typeof WebSocket == 'undefined') {
console.log('不支持websocket')
}
2.如下,第一行代码访问的是本机ip对应的rabbitmq,第二行代码对应的是localhost的rabbitmq,这里两者的不同可以通过访问rabbitmq管理页面来体验一下
通过http://127.0.0.1:15672/来访问rabbitmq管理页面和通过http://本机ip:15672/来访问rabbitmq管理页面是不一样的。ip不同,账户和密码,消息队列等等都有可能不同
//var ws = new WebSocket('ws://本机ip:15674/ws');
var ws = new WebSocket('ws://127.0.0.1:15674/ws');
3.这里的/queue/queue1,指的是队列/队列名称,即名为queue1的queue。注意访问下rabbitmq的管理页面看看有没有这个队列。
client.subscribe("/queue/queue1", function(data)
4.总所周知,‘guest’, 'guest’分别是自带的用户名和密码
client.connect('guest', 'guest', on_connect, on_error, '/');
测试部分
一开始直接浏览器打开stomp.html,有可能没有在该页面收到来自队列的消息,这是当然,因为你还没有在队列里添加消息,如下:
1.打开 http://localhost:15672/#/queues,
从图中可以看出,队列queue1中消息为空,需要添加消息
-
在队列queue1中添加消息,下面我只添加了消息头和消息内容,消息选择为1.不持久类型
点击发送~ -
在stomp.html页面,查看有无消息
如图,收到了消息,说明stomp通道连接成功!
- 接下来,通过maven项目实际操作一番,看看消息生产者与消费者之间如何连接,这是另外一篇博文的事了。