WebSocket的那些事(6- RabbitMQ STOMP目的地详解)

这篇具有很好参考价值的文章主要介绍了WebSocket的那些事(6- RabbitMQ STOMP目的地详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目的地类型

在上节 WebSocket的那些事(5-Spring STOMP支持之连接外部消息代理)中我们已经简单介绍了各种目的地类型,如下图:
WebSocket的那些事(6- RabbitMQ STOMP目的地详解),WebSocket,websocket,rabbitmq,网络协议
这一节我们来详细探讨一下各种目的地类型的区别。

MESSAGE报文中请求头destination的格式如下:

  • 发布到默认交换机的消息目的地格式为:/queue/queue_name
  • 发布到amp.topic交换机的消息目的地格式为:topic/routing_key
  • 其它所有消息目的地格式为:/exchange/exchange_name/routing_key

如果队列名、交换机名、路由key包含了/%或者非ascii字符,这些字符将会被替换为%dddd的意思是16进制编码。


二、Exchange类型目的地

任何exchange/queue或者exchange/routing-key的组合都可以通过前缀为/exchange的目的地来访问。

对于SUBSCRIBE命令,目的地格式为:/exchange/<name>[/<pattern>],格式说明如下:

  • name交换机上创建一个排它,自动删除的队列。
  • 如果<pattern>有指定,则以<pattern>为路由key绑定到名称为name的交换机上。

对于SEND命令,目的地格式为:/exchange/<name>[/<routing-key>],格式说明如下:

  • 通过<routing-key>发送消息到名称为name的交换机上。

备注:Exchange类型的目的地不适用于从已存在的队列消费信息。对于每个订阅者都会创建一个新的队列,并且通过指定的路由key绑定到指定的交换机。如果要消费已存在队列的消息,可以使用/amq/queue目的地。


三、Queue类型目的地

对于简单队列,目的地格式为/queue/<name>

Queue类型目的地只会把消息传递给最多一个订阅者,发送的消息如果没有消费者订阅将会一直入队,直到订阅者进行消费。

  • 对于SUBSCRIBE命令,该类型目的地会创建一个共享的名称为name的队列。
  • 对于SEND命令,名称为name的共享队列会在第一次发送消息到该类型的目的地时创建,消息将会根据路由keyname发送到默认交换机上。

四、AMQ Queue类型目的地

如果要发送或者订阅不由STOMP适配器管理的已存在队列的消息,消息目的地格式为/amq/queue/<name>,说明如下:

  • 对于SENDSUBSCRIBE命令,不会创建队列。如果队列不能存在,使用SUBSCRIBE队列会报错。
  • 对于SEND命令,消息会经由默认交换机直接发送已经存在的名称为name的队列上。
  • 对于SUBSCRIBE命令,针对已存在的名称为name的队列订阅会基于当前STOMP会话建立。

备注:如果没有指定任何队列参数,队列将会被认定持久、非排它、非自动删除。


五、Topic类型目的地

STOMP客户端用的最多的目的地类型就是/topic/<name>,该类型的目的地可以路由消息到多个订阅者,发送到Topic类型目的地的消息如果没有订阅者订阅,将会被丢弃。

关于Topic类型目的地的格式说明如下:

  • 对于SEND命令,消息会通过路由key<name>发送到amp.topic交换机上。
  • 对于SUBSCRIBE命令,首先会创建一个自动删除和非持久化的队列,然后会将该队列通过路由key<name>绑定到amp.topic交换机上。

可以通过stomp.default_topic_exchange参数可以修改默认Topic交换机的名称,如下:

stomp.default_topic_exchange = some.exchange

更多关于目的地类型的说明可以参考:RabbitMQ STOMP插件说明。

WebSocket的那些事(6- RabbitMQ STOMP目的地详解),WebSocket,websocket,rabbitmq,网络协议文章来源地址https://www.toymoban.com/news/detail-716789.html

到了这里,关于WebSocket的那些事(6- RabbitMQ STOMP目的地详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebSocket的那些事(5-Spring中STOMP连接外部消息代理)

    上节我们在 WebSocket的那些事(4-Spring中的STOMP支持详解) 中详细说明了通过 Spring内置消息代理 结合 STOMP 子协议进行Websocket通信,以及相关注解的使用及原理。 但是Spring内置消息代理会有一些限制,比如只支持STOMP协议的一部分命令,像 acks 、 receipts 命令都是不支持的,还有

    2024年02月09日
    浏览(36)
  • WebSocket的那些事(5-Spring STOMP支持之连接外部消息代理)

    上节我们在 WebSocket的那些事(4-Spring中的STOMP支持详解) 中详细说明了通过 Spring内置消息代理 结合 STOMP 子协议进行Websocket通信,以及相关注解的使用及原理。 但是Spring内置消息代理会有一些限制,比如只支持STOMP协议的一部分命令,像 acks 、 receipts 命令都是不支持的,还有

    2024年02月09日
    浏览(41)
  • WebSocket—STOMP详解(官方原版)

    WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未作定义。该协议定义了一种机制,供客户端和服务器协商在WebSocket之上使用的子协议(即更高级别的消息传递协议),以定义各自可以发送何种消息、格式是什么、每个消息的内容等等。子协议的使用是可选的

    2024年02月04日
    浏览(40)
  • websocket + stomp + sockjs学习

    Spring WebSocket整合Stomp源码详解 PDF版本 Spring SpringBoot官方文档资料 spring5.1.9官方文档关于websocket的介绍 spring5.3.29官方文档关于websocket的介绍 WebSocket入门教程示例代码,代码地址已fork至本地gitee,原github代码地址,源老外的代码地址 [WebSocket入门]手把手搭建WebSocket多人在线聊天

    2024年02月12日
    浏览(36)
  • WebSocket(三) -- 使用websocket+stomp实现群聊功能

    SpringBoot+websocket的实现其实不难,你可以使用原生的实现,也就是websocket本身的OnOpen、OnClosed等等这样的注解来实现,以及对WebSocketHandler的实现,类似于netty的那种使用方式,而且原生的还提供了对websocket的监听,服务端能更好的控制及统计(即上文实现的方式)。 但是,真

    2023年04月08日
    浏览(45)
  • HTTP、WebSocket、STOMP、MQTT 协议

    TCP/IP 是用于因特网 (Internet) 的通信协议,是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。 TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合,是一个协议族。 1-1、TCP(传输控制协议,Transmission Control Protocol) 在计算机网

    2024年04月15日
    浏览(55)
  • SpringBoot + WebSocket+STOMP指定推送消息

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 本文将简单的描述SpringBoot + WebSocket+STOMP指定推送消息场景,不包含信息安全加密等,请勿用在生产环境。 JDK:11+ Maven: 3.5+ SpringBoot: 2.6+ stompjs@7.0.0 STOMP 是面向简

    2024年02月14日
    浏览(48)
  • 整合 WebSocket 基于 STOMP 协议实现广播

    SpringBoot 实战 (十六) | 整合 WebSocket 基于 STOMP 协议实现广播 如题,今天介绍的是 SpringBoot 整合 WebSocket 实现广播消息。 什么是 WebSocket ? WebSocket 为浏览器和服务器提供了双工异步通信的功能,即浏览器可以向服务器发送信息,反之也成立。 WebSocket 是通过一个 socket 来实现双

    2024年01月21日
    浏览(52)
  • 基于SockJS+Stomp的WebSocket实现

    前言     之前做个一个功能,通过websocket长链接接收后台推送的数据,然后在前端动态渲染。一直没来的及输出个文档,现在输出一下。 WebSocket介绍     WebSocket 是一种在 Web 应用中实现实时通信的方法,它可以在客户端和服务器端之间建立长连接,实现实时消息传递。  

    2024年02月12日
    浏览(38)
  • flutter开发实战-长链接WebSocket使用stomp协议stomp_dart_client

    flutter开发实战-长链接WebSocket使用stomp协议stomp_dart_client 在app中经常会使用长连接进行消息通信,这里记录一下基于websocket使用stomp协议的使用。 1.1 stomp介绍 stomp,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包