Apollo Stomp ActiveMQ 创建无效的临时目标名称

Posted

技术标签:

【中文标题】Apollo Stomp ActiveMQ 创建无效的临时目标名称【英文标题】:Apollo Stomp ActiveMQ Creates Invalid Temporary Destination Names 【发布时间】:2012-09-02 21:35:35 【问题描述】:

使用代理在 Windows 7 32 位上作为服务运行的 C# 框架 4.0,我在稳定版和开发版上都看到以下错误。

2012-09-09 20:25:03,524 | WARN  | Internal Server Error: org.apache.activemq.apollo.util.path.PathParser$PathException: Invalid destination: 'ID\cEros201-30171-634828191032886763-1\c0\c1', it does not match regex: [ a-zA-Z0-9\_\-\%\~\:]+ | org.apache.activemq.apollo.stomp.StompProtocolHandler | hawtdispatch-DEFAULT-2
2012-09-09 20:25:03,542 | WARN  | Internal Server Error: org.apache.activemq.apollo.util.path.PathParser$PathException: Invalid destination: 'ID\cEros201-30171-634828191032886763-1\c0\c1', it does not match regex: [ a-zA-Z0-9\_\-\%\~\:]+ | org.apache.activemq.apollo.stomp.StompProtocolHandler | hawtdispatch-DEFAULT-3

这样做的最终结果是我无法使用临时队列作为客户端上的调用块,并且在我可以响应异常之前会话超时。

Versions 
    Client dlls Stomp 1.5.2 NMS 1.5.0 
    Broker server apache-apollo-1.4 and apache-apollo-99-trunk-SNAPSHOT

【问题讨论】:

如何指定队列名称?这似乎是一些解析问题或与编码有关。 您是否尝试过使用 Apache.NMS.Stomp v1.5.3 版本 提供的 .net api 隐藏了临时目的地名称的指定。我假设客户端 api 层中存在错误或与代理的配置不匹配(至少开箱即用)。 【参考方案1】:

作为一种解决方法,而不是使用 Apache.NMS.Stomp 切换到 Apache.NMS.ActiveMQ。 Apache Apollo 在 61613 端口上同时支持 STOMP 和 ActiveMQ 协议。

【讨论】:

感谢您这么快的回复。我们正在使用代理中介来支持 html5 和较旧的脚本客户端,因此 Stomp over ws 是我们的主要需求。我当前的解决方法是为客户端会话使用命名队列,并稍后在清理服务中手动删除它们。虽然不理想。

以上是关于Apollo Stomp ActiveMQ 创建无效的临时目标名称的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ、STOMP、Java 示例

apache-apollo安装及配置过程

apache-apollo安装及配置过程

29. Apache apollo

ActiveMQ 无法识别 Stomp:传输方案无法识别:[stomp+ssl]

如何将事务与 Stomp 和 ActiveMQ(和 Perl)一起使用?