ActiveMQ主题和安全性(或Apollo)

时间:2013-07-23 22:01:53

标签: activemq apollo

我是Active MQ的新手。我想知道在Active MQ(或Apollo)中可以使用以下内容。

基本上,我有一个流程可以生成消息以启用或禁用特定站点。当消息(启用/禁用)发送到ActiveMQ时,该消息可能有多个消费者,具体取决于消息的路由密钥。例如,如果消息是启用站点A,则路由键将是site.A.enable。正在监视其siteA队列的站点A将收到此消息以及监视所有启用/禁用消息的系统范围处理器。

现在,我认为在使用主题的Active MQ中这是可行的。 SiteA将订阅site.A.*的所有主题,系统流程将订阅site.*.enablesite.*.disable的所有主题。 这是在ActiveMQ中执行此操作的最佳方式吗?

我还想确保siteA无法订阅site.B.*site.C.*主题。他们只能接收来自site.A.*的邮件。系统流程可以访问所有site.*.*主题。我也认为这可以通过安全插头完成。我只是更新配置文件并指定每个站点主题的读/写/管理员访问权限,并将其连接到用户/ pass或ldap,以识别正在连接的站点。 这是对的吗?如果网站是外部的,那会起作用吗?

我希望能够以最少的配置/设置添加新网站。当siteX上线时,发布者代码将像其他所有消息一样发布消息,除了它将在第一个消息发布时动态创建的主题site.X.*。消费者也可以动态地从site.X开始消费。

这就是我的问题所在。 如何添加网站X只能“动态”访问site.X主题的安全性?我想我必须编辑配置文件并为新网站添加安全资料。然后我必须停止/启动服务器以获取新设置。我可以在服务器上编辑配置,但我不认为每次添加新站点时都可以停止/启动。

有没有更好的方法来实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:1)

你所概述的是非常明智的。您需要为每个站点创建一个新的ActiveMQ用户,并使用授权插件为site.<whatever>提供读写和管理权限。如果您使用的是简单的安全插件,其中身份验证和授权详细信息都在您的activemq.xml中,那么您需要在每次添加站点后重新启动ActiveMQ。

如果您想自动执行此操作(无法动态执行此操作),则需要使用LDAP版本的身份验证和授权插件,并且具有将适当的凭据和权限写入LDAP的脚本一个站点已安装。我猜你可能已经需要某种脚本步骤来首先将凭据添加到网站,所以这应该不是什么大问题。我很确定ActiveMQ应该在没有重启的情况下接收更改,但我自己没有尝试过,所以你需要测试一下。