public MetricPublisher(IConnectionMultiplexer connectionMultiplexer, IMetricPayloadSerializer payloadSerializer, string keyName) { _subscriber = connectionMultiplexer.GetSubscriber(); _payloadSerializer = payloadSerializer; _channel = new RedisChannel("akka.metrics.metricmailbox." + keyName, RedisChannel.PatternMode.Literal); }
public ObservableMetricSubscriber( IConnectionMultiplexer connectionMultiplexer, IMetricPayloadSerializer payloadSerializer, string keyName) : base( connectionMultiplexer, payloadSerializer, keyName) { ObservableSet = _subscriber.WhenMessageReceived(_channel, PayloadSerializer); }
public static IObservable <MailboxMetric> WhenMessageReceived(this ISubscriber subscriber, RedisChannel channel, IMetricPayloadSerializer payloadSerializer) { return(Observable.Create <MailboxMetric>(async(obs, ct) => { await subscriber.SubscribeAsync(channel, (_, message) => { try { var set = payloadSerializer.GetObject(message); foreach (var item in set.Set) { obs.OnNext(item); } } catch (Exception e) { } }).ConfigureAwait(false); return Disposable.Create(() => subscriber.Unsubscribe(channel)); })); }
protected BaseAsyncMetricSubscriber(IConnectionMultiplexer connectionMultiplexer, IMetricPayloadSerializer payloadSerializer, string keyName) : base(connectionMultiplexer, payloadSerializer, keyName) { _subscriber.Subscribe(_channel, async(channel, message) => await HandlePublishEvent(channel, message)); }
public SseRedisAsyncMetricSubscriber(IMailboxEventService mailboxService, IConnectionMultiplexer connectionMultiplexer, IMetricPayloadSerializer payloadSerializer, string keyName) : base(connectionMultiplexer, payloadSerializer, keyName) { _mailboxService = mailboxService; }