2016-07-07 19 views
-1

activemqのドキュメントによると、http://activemq.apache.org/stompクライアントIDヘッダーに永続サブスクリプションを設定する必要があります。Spring websocket stomp sock js activemq耐久サブスクリプション

サブスクリプションヘッダーのconnectヘッダーとactivemq.subscriptionNameにclient-idを次のように設定しましたが、目的の動作が表示されません。ウェブソケットの設定とメッセージ側で何かを設定する必要がありますか?ここで

は、サブスクリプションコード

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(); 
    } 
} 
+0

を示すように、関数内で直接ヘッダを渡して、働いています-websocket'設定? –

答えて

1

あなたは、関連する `春投稿してくださいでした。これは、

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"); 
    }); 
} 
関連する問題