[英]Rabbitmq binding exchange to exchange
我正在寻找一种保护我的网站消息传递系统安全的方法,以便用户仅获取他们应该有权访问的数据。 考虑到这一点,我想到了一个系统,在该系统中,我的服务器将向其发送所有消息的主主题交换。
该网站为每个用户保存一个sessionId。 验证用户身份后,将创建另一个名为sessionId的交换。 允许客户端用户绑定到除主服务器之外的所有交换机。 由于sessionID是唯一的,因此很难猜测另一个用户的sessionID并进行绑定以获取其消息。
每个消息将具有一个sessionID.destination路由键。 客户端将知道所有潜在的目的地。
为了帮助可视化:
-> SessionID Exchange -> client
Server -> master Exchange | -> SessionID Exchange -> client
-> SessionID Exchange -> client
我的问题有两个。 是否可以将交换绑定到rabbitmq中的交换? 另外,以前有人建立过这样的系统吗? 相反,是否有在此主题上有经验的人已经有可以使用的工作系统?
提前致谢。
是的,可以绑定并交换和交换。 您甚至可以进行不同类型的交流。 您需要使用channel.exchangeBind()
而不是channel.queueBind()
。 但是它以类似的方式工作。
我的系统中有一个主题交换,与扇出交换绑定。 我确保发送路由键,并将消息发送到扇出交换机。 它在扇出交换级别没有影响,但是当路由到主题交换时,将使用路由密钥来确定将其发送到哪个队列。
我发现这个博客谈论与我的设计类似的东西。 这不是完全一样的事情,但让我知道这至少是可能的。
如果是单个交换且绑定了多个队列,则客户端发送的消息将通过交换到达基于绑定的可能队列,这意味着来自客户端的消息将在一跳中通过交换到达目标队列。
考虑一种情况,您希望基于绑定将消息发送到可能的目标队列, ALSO还要跳更多的跃点到不同的交换机及其队列绑定。 在这种情况下,以交换绑定交换就符合目的。
绑定队列以进行交换是一个成本很高的过程。交换队列以进行绑定更灵活,并且具有更好的可伸缩性解决方案。 客户端可以创建自己的专用交换机,并在服务器上绑定到专用交换机。 交换绑定交换的性能更好,并解决了可伸缩性问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.