我有一个多用户应用程序,我已经合并了 Spring AMQP 来向我的 RabbitMQ 服务器发送消息,在测试不同的用户之后,我注意到不同帐户上的同时登录会导致其他用户拦截消息,不仅如此,而且当没有人时已登录应用程序仍在抓取消息。我意识到我可能需要为每个用户设置一个 vHost 并确保 AMQP 不会自动连接...
这就是我的问题所在,你到底应该怎么做?
我正在使用 JAVA 配置版本并放弃了 XML 以使其更容易,但实际上并没有。我尝试关闭并销毁 SimpleMessageListener,使用 RabbitUtil 在用户注销时尝试关闭连接,然后在用户重新登录时尝试使用 createConnection,但所有这些要么不起作用,要么导致异常。我将 autoStartup 设置为 false 这似乎有效,但是一旦有人登录,它就会消失。这只是问题的一半,如果我能做到这一点,我可能可以找出虚拟主机,但这是两个问题中更大的问题,因为它使这变得无关紧要。
此时我想知道它是否可以由多用户应用程序同时使用。任何帮助将不胜感激。
最佳答案
您需要提供更多信息,包括您正在使用rabbit做什么以及配置。
但是,您可能不需要每个用户一个虚拟主机,您只需要为每个用户使用单独的队列 - 按需声明它们,使用动态路由键路由到它们;从监听器容器等中添加/删除它们。
关于java - Spring AMQP 多用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28808384/