1

我是 Active MQ 的新手。我想知道在 Active MQ(或 Apollo)中是否可以进行以下操作。

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

现在,我认为这在 Active MQ 中使用主题是可行的。SiteA 将订阅 的所有主题,site.A.*系统进程将订阅 和 的所有site.*.enable主题site.*.disable这是在 ActiveMQ 中做到这一点的最佳方式吗?

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

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

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

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

谢谢!

4

1 回答 1

1

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

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

于 2013-07-24T09:51:33.880 回答