我有一个多用户 Spring Web 应用程序,其中我需要每个登录用户都能够在自己的rabbitmq vHost 上接收消息,这样其他用户就无法查看其他用户的消息。我目前在没有虚拟主机的情况下可以使用此功能,但每个用户都可以收到任何消息。据我了解,使用 vHost 是执行此操作的最简单方法(如果我错了,请纠正我)。
目前是这样设置的。
<!-- Connection Factory -->
<bean id="rabbitConnFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<constructor-arg><value>localhost</value></constructor-arg>
<property name="username" value="guest" />
<property name="password" value="guest" />
<property name="virtualHost" value="/" />
<property name="port" value="5672" />
</bean>
这实际上有两个问题,因为在任何人登录之前在浏览器中启动应用程序时它就会连接。我正在尝试使用 vHost 解决方案实现动态连接,并且仅在该用户登录后进行连接。 到目前为止,我在谷歌上唯一能找到的就是使用 AbstractRoutingConnectionFactory 的 SimpleRoutingConnectionFactory,但是我根本找不到如何在线使用它们的示例。
我非常感谢任何人可以提供的帮助,谢谢。
最佳答案
每个用户使用一个虚拟主机似乎有点过多;为什么不为每个用户创建一个队列/交换器?
关于java - 每个用户的 Spring RabbitMQ 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050231/