使用 Java Spring AMQP 动态配置 RabbitMQ 用户和权限

Dynamically configure RabbitMQ users and permissions with Java Spring AMQP

出于安全原因,我想配置具有特定权限的单独用户帐户以隔离 RabbitMQ 中的队列。由于用户需要动态(添加新的,删除停用的......)我想用 Java Spring AMQP 来实现这一点。

可以使用

创建队列、交换和绑定
rabbitMqConfig.getAdmin().declareQueue(queue);
rabbitMqConfig.getAdmin().declareExchange(exchange);
rabbitMqConfig.getAdmin().declareBinding(binding); 

RabbitMQ 管理 HTTP API 还提供了有关用户管理的功能,如 https://rawcdn.githack.com/rabbitmq/rabbitmq-server/v3.9.4/deps/rabbitmq_management/priv/www/api/index.html 中所述,例如与

/api/users/name
/api/users/user/permissions

所以我会假设 Spring 提供类似

的方法
rabbitMqConfig.getAdmin().declareUser(user); 

但是这个好像没有...

在 Java Spring 中实现这个的理想方法是什么?

据我所知,RabbitAdmin class 不为远程 RabbitMQ 服务器上的 creating/update 用户提供任何类型的 API。

您可以通过创建一个简单的 REST 客户端来实现您想要的,该客户端将与允许这些操作的 API 进行交互。你可以找到这个 here.

的例子

但是,在做这样的事情之前我会三思而后行,因为需要考虑安全隐患(还有一个关于为什么 Java API 不允许这样做的指针)。

例如,执行类似的操作意味着您的应用程序需要具有 RabbitMQ 服务器的管理员权限,这是应该避免的事情。