2016-12-23 8 views
0

웹 소켓 용 스프링 부팅 응용 프로그램이 있습니다. Stomp 웹 소켓을 사용하지 않습니다. 마이크로 서비스의 여러 인스턴스에서 웹 소켓 세션을 공유 할 수있는 방법이 있습니까?스프링 마이크로 서비스 사이의 공유 웹 소켓 세션

Redis 또는 cassandra에서 websocket 세션을 저장할 수있는 방법이 있습니까?

나의 사용 사례는 kofka 대기열을 듣고있는 마이크로 서비스의 여러 인스턴스를 실행했기 때문에 메시지가 수신되면 웹 소켓 세션을 사용하여 클라이언트로 보내야합니다. 세션을 마이크로 서비스에 MAP으로 저장합니다. 내 문제는 내 마이크로 서비스 중 하나가 메시지를 받고있는 중입니다. 세션에 해당 마이크로 서비스가 없으면 메시지가 클라이언트로 전송되지 않습니다.

REDIS 또는 Cassandra에 websocket sesssion을 저장할 수 있다면 세션을 쿼리하고 클라이언트로 보낼 수 있습니다.

요구 사항에 따라 Stomp 웹 소켓을 사용할 수 없으므로 정상적인 웹 소켓이어야합니다.

답변

1

수 없습니다. 카프카 메시지를 수신 한 곳에서부터 마이크로 서비스로 라우팅을 구현해야합니다. 하나의 간단한 방법은 특정 클라이언트에 대한 서비스 인스턴스의 IP를 모든 데이터 저장소 (mongo, redis 등)에 저장하는 것입니다. 그런 식으로 카프카에서 메시지를 받으면 누가 그 사람인지 알기 때문에 어떤 클라이언트가 그 클라이언트에 대한 웹 소켓 세션을 가지고 있는지 조회하게됩니다. 그런 다음 처리중인 세션에 대한 메시지를 중계하기 위해 구현하는 해당 IP에서 일부 http 끝점을 호출합니다.