java - RabbitMQ - 安全/身份验证

标签 java rabbitmq amqp

我正在开发一个应用程序,我只是想知道 RabbitMQ 是否可以允许所有客户端将消息推送到特定队列,并且只有经过身份验证的用户才能使用该队列中的消息?我似乎找不到任何关于此的信息:/

基本上我的模型是这样的: 客户端都连接到同一个队列并将消息推送到该队列上。此外,每个客户端都应该注册自己的队列来接收消息(每个客户端都有唯一的队列)。

因此,基本上客户端会将消息发送到一个队列,并且只有我的服务器应用程序应该能够从中读取、处理数据并将回复发送到特定的用户队列(该队列应该只能由该用户读取,并且只有服务器应该发布在上面)。

我想这是可能的吧?有人可以引导我朝着正确的方向寻找有关这些事物/示例/教程的更多信息

最佳答案

所以,据我所知,开箱即用是不可能的,但你有两个选择:

  1. 如果您熟悉erlang,您可以为rabbitmq编写自己的插件(不需要额外的erlang知识 - 只需基础知识)
  2. 您可以创建 2 个虚拟主机并在每个主机上进行交换(虚拟主机 A 用于读取,虚拟主机 B 用于写入)。在虚拟主机 B 中创建交换器,并使用路由键将其绑定(bind)到特定队列。在虚拟主机 A 中创建联合交换[1]。简介:联邦交换允许映射交换到上游交换,这意味着映射交换将接收来自上游交换的所有消息。因此,在虚拟主机 A 中创建交换 E1,并将其映射到虚拟主机 B 中的交换 E2。对于每个虚拟主机,您可以创建不同的用户。

[1]:http://www.rabbitmq.com/federation.html - 这是关于联合插件的手册,其中包含现成的示例。

关于java - RabbitMQ - 安全/身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589516/

相关文章:

java - Tomcat,Spring MVC,在不使用 htaccess 文件的情况下将用户重定向到 'www'

java - 等待模式在 Selenium 2.0 中消失

java - 从 `file.encoding` 设置 `pom.xml`

Django celery 给了我一个 (13, 'Permission Denied' )

java - activemq brokerName 总是本地主机?

java - 入站和出站网关 AMQP 注释

java - Dimens 文件中定义的字体大小,在 Java 类中显示 3 倍值

c# - ConcurrencyLimit 和 PrefetchCount 有什么区别?

python - RabbitMQ - 使用多个队列

node.js - 如何在 nodejs 中以编程方式删除 Rabbitmq 中的队列?