0

我知道 ActiveMQ 支持 JMSXUserID 属性:

http://activemq.apache.org/jmsxuserid.html

我正在尝试使用 Apollo(一个 ActiveMQ 子项目)而不是 ActiveMQ,目前我正试图找出在 Apollo 中复制相同的行为。

我对机制并不挑剔,但简而言之,我需要一些方法来标记来自经过身份验证的用户的每条传入消息,并使用一个标识符让我知道哪个用户发送了哪个消息,但以一种用户无法欺骗的方式设置自己。这基本上正是 ActiveMQ 使用的 JMSXUserID,但我似乎无法弄清楚如何在 Apollo 中做同样的事情。

我错过了什么?

我发现这对谷歌来说特别困难,因为 ActiveMQ 在其每个页面上都链接到 Apollo,所以我的大部分搜索结果都没有帮助。

提前致谢。

4

2 回答 2

0

Apollo 甚至支持 JMS 吗?

来自网页:http ://activemq.apache.org/apollo/

目前,Apollo 仅支持 STOMP 协议,但就像最初的 ActiveMQ 一样,它被设计为多协议代理。在未来的版本中,它将添加 OpenWire 支持,以便与 ActiveMQ 5.x JMS 客户端兼容。

为了解决您手头的问题,您不能简单地在代码中添加带有用户标识的标题吗?

只需从操作系统中获取它,假设您使用的是 Java,那么您也许可以使用类似的东西

System.getProperty("user.name") 

并将其附加到 STOMP 标头。然而,这是客户端库(stomp 库,如果使用的话)而不是服务器本身的问题。

于 2012-06-17T15:02:21.273 回答
0

Apollo 的用户手册描述了如何配置 apollo 以自动添加设置为发送用户 id 的用户标头

基本上,您想使用以下内容配置连接器的 stomp 协议:

<connector id="tcp" bind="tcp://0.0.0.0:61613">
  <stomp>
    <add_user_header separator=",">JMSXUserID</add_user_header>
  </stomp>
</connector>

不幸的是,Openwire 协议还不支持这一点。 问题 APLO-213已开放解决。

于 2012-06-18T13:36:59.037 回答