【问题标题】:ActiveMQ converting `/` to `.` in queue names when using curl使用 curl 时,ActiveMQ 将队列名称中的 `/` 转换为 `.`
【发布时间】:2020-02-18 18:17:42
【问题描述】:

我的 5.0.8 ActiveMQ 队列名为 queue/andburn。使用

curl -u admin:admin -d 'body="Aardvark"' "http://localhost:8161/api/message/queue/andburn?type=queue"

创建一个新队列queue.andburn。当我像\/ 一样逃脱/ 时,我得到queue\.andburn。当我省略 type=queue 时,我没有看到我的消息已添加到现有队列中。当我使用/ 表示斜线时也是如此。

注意:所有转义都是在 URI 中的 queue 之后完成的,例如

"http://localhost:8161/api/message/queue\/andburn?type=queue"

ActiveMQ REST page 没有帮助解决这个问题。

这是curl --version的输出

curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz

更新:在使用 RestClient gem 通过 Ruby 脚本向 ActiveMQ 发送请求时也会发生这种情况。

【问题讨论】:

  • 创建 ActiveMQ 问题AMQ-4756
  • AMQ-4756 现在似乎已修复——感谢 ActiveMQ 社区!

标签: activemq


【解决方案1】:

转义 URL 通常由 percent encoding 完成。因此,在您的情况下,斜杠将是 %2F

http://localhost:8161/api/message/queue%2Fandburn?type=queue

我没有使用 CURL 和 ActiveMQ 对此进行过测试,但这是在 URI 中表示斜线的最自然的方式。

【讨论】:

  • 这也会产生一个名为 queue.andburn 的队列。这就好像 URI 被解码了,然后所有的/s 都被转换为.s。
【解决方案2】:

我今天遇到了这个问题并做了一个小的搜索。我使用 ActiveMQ 版本 5.15.11。可以找到对我有用的解决方案 here。我只是使用了替代的生产语法。简单地说,http://127.0.0.1:8161/api/message?type=queue&destination=My.Queue.With/Slash(而不是在 ../message.queue/{queue_name} 之后给出队列名称)

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 2014-08-14
    • 2011-11-11
    • 2016-11-09
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多