/// <inheritdoc/> protected override IReverseCallClient <PublicFilterClientToRuntimeMessage, FilterRuntimeToClientMessage, PublicFilterRegistrationRequest, FilterRegistrationResponse, FilterEventRequest, PartitionedFilterResponse> CreateClient() => _reverseCallClients.GetFor <PublicFilterClientToRuntimeMessage, FilterRuntimeToClientMessage, PublicFilterRegistrationRequest, FilterRegistrationResponse, FilterEventRequest, PartitionedFilterResponse>( () => _client.ConnectPublic(), (message, arguments) => message.RegistrationRequest = arguments, message => message.RegistrationResponse, message => message.FilterRequest, (message, response) => message.FilterResult = response, (arguments, context) => arguments.CallContext = context, request => request.CallContext, (response, context) => response.CallContext = context, message => message.Ping, (message, pong) => message.Pong = pong, TimeSpan.FromSeconds(5));
/// <inheritdoc/> public IEventHorizonConnection Create(MicroserviceAddress connectionAddress, ExecutionContext executionContext) { var client = _reverseCallClients.GetFor( new EventHorizonProtocol(), connectionAddress.Host, connectionAddress.Port, TimeSpan.FromSeconds(10)); return(new EventHorizonConnection( executionContext, client, _metrics, _loggerFactory.CreateLogger <EventHorizonConnection>())); }
IReverseCallClient <EventHorizonConsumerToProducerMessage, EventHorizonProducerToConsumerMessage, ConsumerSubscriptionRequest, Contracts.SubscriptionResponse, ConsumerRequest, ConsumerResponse> CreateClient( MicroserviceAddress microserviceAddress, CancellationToken cancellationToken) { var client = _clientManager.Get <Contracts.Consumer.ConsumerClient>( microserviceAddress.Host, microserviceAddress.Port); return(_reverseCallClients.GetFor <EventHorizonConsumerToProducerMessage, EventHorizonProducerToConsumerMessage, ConsumerSubscriptionRequest, Contracts.SubscriptionResponse, ConsumerRequest, ConsumerResponse>( () => client.Subscribe(cancellationToken: cancellationToken), (message, arguments) => message.SubscriptionRequest = arguments, message => message.SubscriptionResponse, message => message.Request, (message, response) => message.Response = response, (arguments, context) => arguments.CallContext = context, request => request.CallContext, (response, context) => response.CallContext = context, message => message.Ping, (message, pong) => message.Pong = pong, TimeSpan.FromSeconds(7))); }