当前位置: 首页 > 知识库问答 >
问题:

ApacheMQ Artemis保留没有路由的消息

颜鸿云
2023-03-14
    null
  • 订阅目标TaskResponse,不带选择器/筛选器
  • 发送到目标taskrequest,标题为clientId=ID(服务器将请求的客户端的ID)

客户123:

  • 订阅目标taskrequest,选择器clientId=123
  • 发送到目标TaskResponse,标头clientId=123

Client123断开连接:Artemis删除多播地址TaskRequest和filter clientId=123的协同响应多播队列

服务器向客户端123的TaskRequest发送消息:根据服务器上的stomp客户端,消息发送成功。在代理上,消息消失。

反之亦然:连接了客户端123,而服务器没有:根据客户端123上的stomp客户端,消息发送成功。在代理上,消息消失。

<acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true;anycastPrefix=/queue/</acceptor>

共有1个答案

鲍健柏
2023-03-14

你正在观察的是预期的行为。如果您将消息发送到一个没有队列的地址(或者用STOMP术语来说--一个没有订阅者的目的地),那么消息将无处可去,并将被丢弃。这是正常的pub/sub语义。

如果即使没有订阅者,也要保留邮件,则可以:

  1. 使用选播(即点对点)语义而不是多播。Artemis文档中对此进行了讨论。
  2. 如Artemis文档中所述,使用“持久的”STOMP订阅服务器。这里的警告是,仍然需要在发送消息之前创建订阅,您还需要确保在完成订阅时删除订阅,否则它可能会积累消息。
 类似资料:
  • 在学习RabbitMq中,有几种情况我不太知道怎么回事: 情况一 假如我定义了一个队列test,他没有显示绑定交换机,那么会自动绑定到默认交换机,那么这个时候绑定键bindkey是不是队列名字test??现在生产者发了一个消息,假如这个消息没有定义路由键routingKey,那么这个时候消息会被路由到队列test吗? 情况二 假如我定义了一个队列test1和test2,他们也是没有显示绑定交换机,

  • 问题内容: 我是AngularJS的新手,正在尝试为自己构建一个简单的小应用程序。我有正在使用抓取的应用程序的JSON数据,并且该数据在多个视图/路由之间应该相同。但是,当我转到新路线时,JSON数据(存储为)不再可用于新视图。我该怎么做才能将此数据传递到新视图,而无需再次获取?(本教程的电话目录应用程序每次都会根据我的判断重新获取此数据。) 据我了解,可以做到这一点,但似乎人们对此并不满意。如果

  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此hash添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发

  • 问题内容: 我正在学习AngularJS,有一件事让我很烦。 我用来为我的应用程序声明路由规则: 但是当我在浏览器中导航到我的应用程序时,我看到的不是。 所以我的问题是为什么AngularJS将此哈希添加到url中?有可能避免它吗? 问题答案: 实际上,对于非HTML5浏览器,您需要#(#标签)。 否则,他们将只通过提到的href对服务器进行HTTP调用。#是一个旧的浏览器短路问题,它不会触发请求

  • 我正在使用ActiveMQ Artemis 2.17.0,并且面临路由问题。 我实现了一个插件,它记录了before消息路由,我看到一些消息从路由到。 没有转移设置,主题和队列由生产者和消费者动态创建。有一个将目标映射到虚拟主题的设置 和都是有效的主题,但它们不应该被链接。 什么能解释这种行为?

  • 我正在考虑将Socket.io集成到一个express应用程序中。 js有一个非常好的特性,可以通过socket.io消息调用快速路由。 不过,帆在其他方面比我需要的要多一点。我正在寻找一种方法,使socket.io请求转发到快速路由,而不必使用整个sails框架。我想这是一个很常见的需求,所以我很惊讶我没有找到一个npm模块来做这件事,但是找了很长时间,我什么也没有找到。Express.io会这