Hi guys,
Latest RO. Delphi Tokyo. Olympia Server and Event Repository.
We have multiple services (for not calling them microservices) and all of them need to go through a login method via one of the services (authorization service). This one is the only service in charge of creating adding sessions and events to Olympia.
All the services share the same applicationId, and all the services on this family have designated an olympia service and repository internally so they can send out event sinks via an event writer.
Only this Authorization service performs logouts or destroys sessions. One of the methods of this authorization service is a RegisterSink (Subscribe) which basically does some db operations and at the end executes RegisterClient(aSessionid, anEventSinkId) from a TRORemoteDataModule as usually you will do to announce to the Olympia Event Repository to keep an eye on this session.
So if a service wants to subscribe to receive events he will call
AuthorizationService.Subscribe(currentSessionGUID, EID_Something) which does the proper call to RegisterClient from a TRORemoteDataModule with an Olympia event repository and session manager associated.
Our issue is that it doesnt work, only way we are getting events is if after calling the AuthorizationService.Subscribe we also call from the RemoteModule from the original service RegisterClient.
We dont understand why because the RegisterClient method signature simply requires a sessionID (GUID) and the Event sink Id and then calls the proper method on the event repository which all the services supposedly are sharing.
Is there something else that is initiated locally on each service that we are missing and its communicated along to Olympia?
Does Olympia uses in some way the separate message client id used to communicate to it?
also do we need a different message (BinMessage in this case) to communicate to olympia or a single one for the entire service/server is fine? is it better to have them separated?
Thank you in advance.