我有一个场景,客户端通过STOMP将消息发送到RabbitMQ /queue 或 /topic 目的地 .
/queue
/topic
另一方面,我有一个服务器进程,通过AMQP连接到RabbitMQ . 是否可以从AMQP访问“STOMP-channels”或者它们是否被隔离到自己的名称空间?
看起来AMQP Channels 可以通过 /amq/queue/ 从STOMP访问,但我找不到另一个方向的情况 .
/amq/queue/
我通过使用Rabbit Web管理员找到了答案,并仔细研究了Spring-Stomp over Websocket实现在后台实际执行的操作 .
/topic 命名空间是通过为每个连接的stomp客户端注册一个自动删除队列来实现的,该客户端使用 amq.topic 交换机上主题名称的路由密钥 . 因此,要从非Stomp客户端收听这些消息,您必须执行相同的操作 .
amq.topic
/queue 命名空间是通过创建(持久)队列并将默认空“”交换的绑定注册到队列来实现的 . 要使用消息,您可以直接使用队列 - 并且要将消息发送到队列,您将向空交换发送消息,并将路由密钥设置为队列名称 .
1 回答
我通过使用Rabbit Web管理员找到了答案,并仔细研究了Spring-Stomp over Websocket实现在后台实际执行的操作 .
/topic
命名空间是通过为每个连接的stomp客户端注册一个自动删除队列来实现的,该客户端使用amq.topic
交换机上主题名称的路由密钥 . 因此,要从非Stomp客户端收听这些消息,您必须执行相同的操作 ./queue
命名空间是通过创建(持久)队列并将默认空“”交换的绑定注册到队列来实现的 . 要使用消息,您可以直接使用队列 - 并且要将消息发送到队列,您将向空交换发送消息,并将路由密钥设置为队列名称 .