I want to implement scalable signaling server. I use kurento client, kurento media server to implement N:M group call with spring boot signaling server. I understand the tutorial docs, and checked it works well. However, I have to consider scale-out problems in my project, so I thought it will be nice to save session info in redis so that multiple was can share room info, sessions info. But I have no idea to save MediaPipeline object or the object info to redis. Is it possible to use jpa with redis?
this is Room class
public class Room implements Closeable {
private final Logger log = LoggerFactory.getLogger(Room.class);
private final ConcurrentMap<Long, UserSession> sessions = new ConcurrentHashMap<>();
private final MediaPipeline pipeline;
private final Long roomId;
this is UserSession class
public class UserSession implements Closeable {
private final Logger log = LoggerFactory.getLogger(UserSession.class);
private final Participant participant;
private final WebSocketSession session;
private final MediaPipeline pipeline;
private final Long roomId;
private final WebRtcEndpoint outgoingMedia;
private final ConcurrentMap<Long, WebRtcEndpoint> incomingMedia = new ConcurrentHashMap<>();
I want my backend servers to share user session info and room info with media pipeline, but I don't know how to save these info to redis. Any ideas?