`
sheungxin
  • 浏览: 105852 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RabbitMQ使用场景练习:STOMP plugin

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

rabbitmq-plugins enable rabbitmq_web_stomp
rabbitmq-plugins enable rabbitmq_web_stomp_examples
通过链接:http://127.0.0.1:15670/web-stomp-examples可以访问演示样例,实际上没法用,因为引用的jquery.min.js是google的资源。

var mqStompUrl="http://192.168.174.131:15674/stomp";
var ws = new SockJS(mqStompUrl);//使用socket
//var ws = new WebSocket("ws://192.168.174.131:15674/ws");//使用websocket
var client = Stomp.over(ws);
// SockJS does not support heart-beat: disable heart-beats
client.heartbeat.incoming = 0;
client.heartbeat.outgoing = 0;

client.debug = function(e) {
   console.log(e);
};

// default receive callback to get message from temporary queues
client.onreceive = function(m) {
   console.log(m)
}

var on_connect = function(x) {
   id = client.subscribe("/queue/hehe",function(m) {
      //...
   }});
};
var on_error =  function() {
   console.log('error');
};
client.connect('sheungxin', '123456', on_connect, on_error, '/');

client.send("/queue/hehe",{"content-type":"text/plain"}, text);
使用websocket时报以下错误:failed: Error during WebSocket handshake: Unexpected response code: 404,暂时未找到原因

可参考:http://www.rabbitmq.com/web-stomp.html

  • 简单总结
/queue/queuename:使用默认转发器订阅/发布消息,默认由stomp自动创建一个持久化队列

/amq/queue/queuename:与/queue/queuename的区别在于队列不由stomp自动进行创建,队列不存在失败

/topic/routing_key:通过amq.topic转发器订阅/发布消息,订阅时默认创建一个临时队列,通过routing_key与topic进行绑定

/temp-queue/xxx:创建一个临时队列(只能在headers中的属性reply-to中使用),可用于发送消息后通过临时队列接收回复消息,接收通过client.onreceive

/exchange/exchangename/[routing_key]:通过转发器订阅/发布消息,转发器需要手动创建

client.subscribe(destination,callback,headers) :订阅消息

client.send(destination,headers,body):发布消息

client.unsubscribe(id):取消订阅,id为订阅时返回的编号

client.onreceive:默认接收回调从临时队列获取消息

  • Queue Properties的支持
需要版本的支持,3.6.0以后大多都可以支持,具体具体参考:http://www.rabbitmq.com/stomp.html

  • 中文消息无法发送问题
中文消息,stomp协议存在编码的问题,发送不出去,会报错关闭掉。可以对中文消息进行encodeURI(data),接收消息时decodeURI(d.body)。官网文章中提供,消息编码必须为UTF-8。
分享到:
评论

相关推荐

    docker-rabbitmq-stomp:使用Stomp插件为RabbitMQ创建Docker镜像的Dockerfile

    使用STOMP插件运行RabbitMQ的基本映像 感谢tumtumcloud! 这些内容基于出色的https://github.com/tutumcloud/rabbitmq图像。 建立它 docker build -t yourid/rabbitmq:latest . 运行 docker run --name=...

    rabbitmq+vue+stomp.zip

    在IT行业中,构建实时通信系统是一项常见的需求,用于实时数据传输、通知推送等场景。本项目结合了`RabbitMQ`、`Vue.js`和`STOMP`协议,旨在实现一个实时消息推送系统。下面将详细阐述这些技术及其在项目中的应用。 ...

    Go语言版本rabbitmq消息队列库:simple、worker、Fanout 模型、Direct 模型、Topic模型

    RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了一个经纪人(Broker)构架,这意味着消息在发送...

    RabbitMQ学习实践二:MQ的安装

    RabbitMQ学习实践二:MQ的安装

    rabbitmq-web-stomp-examples-master.zip_The Bind_rabbitmq stomp_r

    This project contains few basic examples of [RabbitMQ Web STOMP plugin] usage. Once installed the server will bind to port 15670 and serve few static HTML files on port 15670 (e.g. ...

    RabbitMQ安装包,版本:rabbitmq-server-3.9.11.exe

    rabbitmq-server-3.9.11.exe

    RabbitMQ 消息中间件示例: 抢购

    **RabbitMQ 消息中间件在抢购场景中的应用** 在现代互联网应用中,抢购活动已经成为一种常见的促销手段,吸引大量用户在同一时间参与。为了处理这种高并发的业务场景,开发人员需要采取有效的方式来分发和处理大量...

    RabbitMQ集群搭建指南:提升企业消息系统的效能与稳定性

    【RabbitMQ集群搭建指南】 在企业IT架构中,消息队列(MQ)扮演着至关重要的角色,它能够实现异步处理、解耦系统组件、提高系统吞吐量。RabbitMQ作为开源MQ的佼佼者,凭借其高效、稳定和易扩展的特性,广泛应用于...

    rabbitmq-3.10.6:management

    rabbitmq-3.10.6:management

    RabbitMQ快速入门及API介绍(401M)

    【课程目录】:---第一章:RabbitMQ介绍----1-什么是消息中间件.mp4----2-RabbitMQ消息队列安装:window环境.mp4----3-RabbitMQ消息队列安装 :Linux环境.mp4----4-Rabbitmq入口示例:server.mp4----5-rabbitmq入口...

    RabbitMq使用手册

    本文档为 RabbitMq 使用手册,介绍了 RabbitMq 的应用场景和开发指导。RabbitMq 是一个由 Erlang 开发的 AMQP(Advanced Message Queue)流行的开源消息队列系统。RabbitMq 的结构图如下: RabbitMq 几个概念说明:...

    rabbitmq-3.7.28-management-alpine 离线镜像安装包

    rabbitmq-3.7.28-management-alpine 离线镜像安装包

    springboot+websocket+Stomp+RabbitMq 实现多人聊天室

    在本文中,我们将深入探讨如何使用Spring Boot、WebSocket、STOMP协议和RabbitMQ来构建一个功能完善的多人聊天室系统。这些技术的结合为实时通信提供了高效且可靠的解决方案。 首先,Spring Boot是Java开发Web应用...

    docker安装rabbitmq并整合springboot

    1. 拉取 RabbitMQ 镜像:使用 Docker 的 pull 命令拉取 RabbitMQ 镜像,例如:`docker pull rabbitmq:3.9.8-management`。 2. 启动 RabbitMQ 容器:使用 Docker 的 run 命令启动 RabbitMQ 容器,例如:`docker run -...

    RabbitMQ实战 高效部署分布式消息队列 PDF下载

    《RabbitMQ实战:高效部署分布式消息队列》是一本深度解析RabbitMQ技术的书籍,专注于帮助读者理解和掌握如何在实际项目中高效地部署和使用这个强大的消息中间件。RabbitMQ作为开源的消息代理和队列服务器,广泛应用...

    RabbitMQ相关的面试题和问题解析

    rabbitmq面试:RabbitMQ相关的面试题和问题解析 rabbitmq面试:RabbitMQ相关的面试题和问题解析 rabbitmq面试:RabbitMQ相关的面试题和问题解析 rabbitmq面试:RabbitMQ相关的面试题和问题解析 rabbitmq面试:...

    kettle rabbitmq 插件开发

    标题 "kettle rabbitmq 插件开发" 涉及的是如何在 Pentaho Kettle(也称为 Spoon)中创建和使用 RabbitMQ 插件。Kettle 是一个开源的数据集成工具,它允许用户进行数据抽取、转换和加载(ETL)操作。RabbitMQ 是一个...

    RabbitMQ中文文档.pdf

    RabbitMQ支持多种消息协议的消息传递,包括AMQP协议、STOMP协议、MQTT协议等。RabbitMQ还提供了多种交换机类型,包括direct exchange、fanout exchange、topic exchange、headers exchange等,可以满足不同的路由...

    rabbitmq-template:用于存储我的RabbitMQ模板的存储库

    image : rabbitmq:3-management container_name : rabbitmq volumes : - rabbitmq-vol:/var/lib/rabbitmq - rabbitmq-log:/var/log/rabbitmq - ./conf/:/etc/rabbitmq/ networks : - rabbitmq-net 步骤2:...

Global site tag (gtag.js) - Google Analytics