- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 Artemis 2.6.2
,只有 STOMP 和以下星座:
经纪人:
服务器:
TaskResponse
没有选择器/过滤器TaskRequest
, header clientId = ID(服务器请求的客户端的 ID)客户端 123:
TaskRequest
TaskResponse
header clientId = 123当我在 Artemis Console
上观看时,会发生以下情况:
没有服务器和客户端连接:没有地址或队列存在
服务器连接:Artemis
创建一个多播地址TaskResponse
和一个带有空过滤器的多播队列
客户端 123 连接:Artemis
创建一个多播地址 TaskRequest
并为此地址创建一个多播队列,过滤器 clientId = 123
消息交换:消息按预期从服务器传输到客户端,然后返回服务器。
客户端 123 断开连接:Artemis
删除多播地址 TaskRequest
以及过滤器 clientId = 123 的相应多播队列
服务器向客户端 123 的 TaskRequest 发送消息:根据服务器上的 STOMP
客户端,消息发送成功。在代理上,消息消失了。
相同的行为反之亦然:客户端 123 已连接但服务器未连接:根据客户端 123 上的 STOMP
客户端,消息已成功发送。在代理上,消息消失了。
我的猜测是消息被丢弃是因为没有到订阅者的路由。如果我在 broker.xml 的地址设置部分启用选项“send-to-dla-on-no-route”,消息将直接进入死信队列。
您知道在订阅者重新连接之前保留消息的方法吗?
我正在使用 Stomp.Net Library与 SelectorsCore Example但只减少到选择器 s1。工作流程与我上面写的有点不同。
不幸的是,我没有找到一个示例来启用将 STOMP 消息记录到 Artemis 中的文件中。因此我用 WireShark 记录了数据包, 导出为文本并上传到 Gist StompMessages.txt .您可以在那里看到不同的 STOMP 消息,例如搜索 CONNECT、SEND 等。
解决方案是在 broker.xml
的 acceptor
元素中使用选项 anycastPrefix=/queue/
来强制队列输入任播
:
<acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true;anycastPrefix=/queue/</acceptor>
最佳答案
您观察到的是预期的行为。如果您将消息发送到没有队列的地址(或者在 STOMP 术语中 - 没有订阅者的目的地),那么该消息将无处可去并被丢弃。这是正常的发布/订阅语义。
如果您想在没有订阅者的情况下保留消息,您可以:
关于stomp - ApacheMQ Artemis 保留没有路由的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770006/
我使用的是 Artemis 2.6.2,只有 STOMP 和以下星座: 经纪人: 没有在 broker.xml 中配置队列,一切都是自动创建的。 服务器: 订阅目标 TaskResponse 没有选择
我尝试使用 ApacheMQ 在 Eclipse 中实现一个简单的 JMS(传统不使用 spring)代码。 我已经从apache.org下载了ApacheMQ以及来自 SimpleQueueSend
我正在尝试将 apacheMQ 集成到我在 Tomcat 上运行的 Web 应用程序中。我找到了一些关于本地集成的教程(我不打算进行全局集成)但我不确定如何进行。对于初学者来说,所有教程似乎都很困惑。
M 使用 Spring Boot 和 ActiveMQ 来发送和接收消息。请帮忙 我的 MAVEN 项目中有 3 个类 1. SampleActiveMQApplication pac
我是一名优秀的程序员,十分优秀!