Spring websocket stomp sock js activemq耐用的订阅
问题描述:
根据activemq的文档,我们需要设置http://activemq.apache.org/stomp客户端标头拥有持久订阅。Spring websocket stomp sock js activemq耐用的订阅
我在连接标头中设置了client-id,在订阅标头中设置了activemq.subscriptionName,如下所示,但是我没有看到所需的行为。我们是否需要在Web套接字配置和消息端设置任何东西?
以下是申购代码
var headers = {
// additional header
'client-id': 'my-client-id'
};
var subscription_headers = {
// additional header
'activemq.subscriptionName': 'my-client-id'
};
var connect = function() {
var socket = new SockJS(webSocketUrl);
stompClient = Stomp.over(socket);
stompClient.connect(headers, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe(topic, function (message) {
.....
.....
}, subscription_headers);
}, function(frame) {
console.log("Web socket disconnected");
});
}
的WebSocket配置
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
@Value("${spring.websocket.activemq.relay.host}")
private String relayHost;
@Autowired
@Value("${spring.websocket.activemq.relay.port}")
private int relayPort;
@Autowired
@Value("${spring.activemq.user}")
private String activeMqLogin;
@Autowired
@Value("${spring.activemq.password}")
private String activeMqPassword;
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/queue/", "/topic/")
.setRelayHost(relayHost)
.setRelayPort(relayPort)
.setSystemLogin(activeMqLogin)
.setSystemPasscode(activeMqPassword);
registry.setApplicationDestinationPrefixes("/testbrkr");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/exWs").withSockJS();
}
}
答
这个工作,直接传递的报头中的函数如图
var connect = function() {
var socket = new SockJS(webSocketUrl);
stompClient = Stomp.over(socket);
stompClient.connect({"client-id": "my-client-id"},, function (frame) {
console.log('Connected: ' + frame);
stompClient.subscribe(topic, function (message) {
.....
.....
}, {"activemq.subscriptionName": "my-client-id"});
}, function(frame) {
console.log("Web socket disconnected");
});
}
能否请您发表有关'春天-websocket'配置? –