Rabbitmq 绑定交换到交换

Ale*_*sen 2 messaging amqp rabbitmq rabbitmq-exchange

我正在寻找一种方法来保护我的网站消息系统,以便用户只能获取他们应该有权访问的数据。考虑到这一点,我想到了一个系统,其中我有一个主主题交换,我的服务器将向其发送所有消息。

该网站为每个用户保存一个 sessionId。当用户通过身份验证时,会创建另一个名为 sessionId 的交换。客户端用户可以绑定到除主交换机之外的所有交换机。由于 sessionID 是唯一的,因此很难猜测其他用户的 sessionID 并绑定以获取他们的消息。

每条消息都会有一个 sessionID.destination 的路由键。客户端将知道所有潜在的目的地。

为了帮助可视化:

                            -> SessionID Exchange -> client
Server -> master Exchange | -> SessionID Exchange -> client
                            -> SessionID Exchange -> client
Run Code Online (Sandbox Code Playgroud)

我的问题有两个方面。是否可以将交换器与rabbitmq中的交换器绑定?另外,以前有人建立过这样的系统吗?相反,在这个主题上有经验的人是否已经拥有我可以使用的工作系统?

先谢谢了。

rob*_*olf 5

是的,可以绑定、交换和交换。您甚至可以进行不同类型的交换。您需要使用channel.exchangeBind()而不是channel.queueBind(). 但它的工作原理类似。

我的系统中有一个主题交换绑定到一个扇出交换。我确保将路由密钥与发送到扇出交换的消息一起发送。它在扇出交换级别没有影响,但是当它被路由到主题交换时,路由键将用于确定它被发送到哪些队列。

  • 将队列绑定到交换器是一个代价高昂的过程。将队列绑定到许多交换器会导致绑定流失。更好的可扩展性解决方案是使用交换器到交换器绑定。客户端将创建自己的私有交换并绑定到服务器上的交换。交换到交换绑定的性能更好,并解决了可扩展性问题。 (3认同)