我正在尝试在我的项目中使用 RabbitMQ 作为代理,并且我想在客户端打开套接字时分配目标队列。像这样的东西:http: //i.imgur.com/ldB2M0m.png
我设法做到了SimpleBroker
,但是当我尝试做到这一点时,StompBrokerRelay
我无法在 RabbitMQ 上分配队列,并且我停止在客户端(http://i.imgur.com/gNaRHCQ.png)上接收消息。
这就是我的做法:
控制器:
@RestController
public class FeedController {
@Autowired
private SimpMessageSendingOperations template;
@RequestMapping(value = "/feed", method = RequestMethod.POST, consumes = "application/json")
public Reference getLeankrReference(@RequestBody Reference ref)
{
this.template.convertAndSendToUser(ref.getChannelId(), "/topic/feed", ref);
return ref;
}
}
网络套接字配置:
@Configuration
@EnableWebSocketMessageBroker
@EnableScheduling
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config)
{
config.enableStompBrokerRelay("/topic/")
.setAutoStartup(true);
//config.enableSimpleBroker("/user/");
config.setApplicationDestinationPrefixes("/app");
}
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/vision").withSockJS();
}
}
客户:
function connect() {
var socket = new SockJS('/ws/vision');
var channel = document.getElementById('name').value;
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/user/' + channel + '/feed', function(message) {
showContent(JSON.parse(message.body));
});
});
}
我知道我错过了一些东西。也许一些经纪人配置?
先感谢您!