我开发了一个服务器& Spring中的客户端通过STOMP使用Web套接字,所有这些都可以使用SimpleBroker完美运行:
@Override
public void configureMessageBroker( MessageBrokerRegistry pConfig )
{
pConfig.enableSimpleBroker( "/queue", "/topic" );
我现在正在尝试切换使用RabbitMQ作为消息代理:
@Override
public void configureMessageBroker( MessageBrokerRegistry pConfig )
{
pConfig.enableStompBrokerRelay( "/queue", "/topic" );
我已经在POM中添加了相应的依赖项,按照其网站上的说明安装了RabbitMQ。应用程序似乎运行正常。
但是,只要服务器直接向特定用户发送消息:
@Autowired
private SimpMessagingTemplate theTemplate;
theTemplate.convertAndSendToUser( pHeaderAccessor.getUser().getName(), "/queue/device", lResponse );
我在日志中看到以下输出:
25-01-2018 15:52:19.782 | ERROR | reactor-tcp-io-1 | aging.simp.stomp.StompBrokerRelayMessageHandler$StompConnectionHandler | 652 | Received ERROR {message=[Invalid destination], content-type=[text/plain], version=[1.0,1.1,1.2], content-length=[62]} session=_system_ text/plain payload='/**USERNAME**/queue/device' is not a valid exchange destination
从阅读RabbitMQ / STOMP页面,我可以看到有限数目的目的地类型,其中'/ user'不是其中之一,我猜这是错误产生的原因。
现在我正在使用RabbitMQ向用户发送消息的正确方法是什么?
感谢。