Esempio n. 1
0
        public ReaderSource <T> CurrentTaggedEvents(Tag tag)
        {
            if (tag == null)
            {
                throw new ArgumentException("Tag is null");
            }

            var actorName = Regex.Replace(_topic, @"[^\w\d]", "");
            var msg       = new CurrentEventsByTag <T>(_tenant, _namespace, _topic, _fromMessageId, _toMessageId, tag, _brokerWebServiceUrl, _conf.ReaderConfigurationData, _clientConfiguration);
            var actor     = _actorSystem.ActorOf(CurrentEventsByTagActor <T> .Prop(msg, _client, _lookup, _cnxPool, _generator, _schema), actorName);

            return(new ReaderSource <T>(_brokerWebServiceUrl, actor));
        }
Esempio n. 2
0
        public SqlSource <IEventEnvelope> CurrentTaggedEvents(Tag tag)
        {
            if (tag == null)
            {
                throw new ArgumentException("Tag is null");
            }

            var buffer    = new BufferBlock <IEventEnvelope>();
            var actorName = Regex.Replace(_topic, @"[^\w\d]", "");
            var msg       = new CurrentEventsByTag(_tenant, _namespace, _topic, _selectedColumns, _fromMessageId, _toMessageId, tag, _options, _brokerWebServiceUrl);
            var actor     = _actorSystem.ActorOf(CurrentEventsByTagActor.Prop(msg, buffer), actorName);

            return(new SqlSource <IEventEnvelope>(_brokerWebServiceUrl, buffer, actor));
        }
        public CurrentEventsByTagActor(CurrentEventsByTag message, BufferBlock <IEventEnvelope> buffer)
        {
            _admin   = new Admin.Public.Admin(message.AdminUrl, new HttpClient());
            _buffer  = buffer;
            _message = message;
            var topic      = $"persistent://{message.Tenant}/{message.Namespace}/{message.Topic}";
            var partitions = _admin.GetPartitionedMetadata(message.Tenant, message.Namespace, message.Topic);

            Setup(partitions.Body);
            Receive <Terminated>(t =>
            {
                var children = Context.GetChildren();
                if (!children.Any())
                {
                    Context.System.Log.Info($"All children exited, shutting down in 5 seconds :{Self.Path}");
                    Self.GracefulStop(TimeSpan.FromSeconds(5));
                }
            });
        }
Esempio n. 4
0
        public CurrentEventsByTagActor(CurrentEventsByTag <T> message, IActorRef client, IActorRef lookup, IActorRef cnxPool, IActorRef generator, ISchema <T> schema)
        {
            _admin     = new Admin.Public.Admin(message.AdminUrl, new HttpClient());
            _message   = message;
            _schema    = schema;
            _client    = client;
            _buffer    = new BufferBlock <IMessage <T> >();
            _cnxPool   = cnxPool;
            _lookup    = lookup;
            _generator = generator;
            var topic      = $"persistent://{message.Tenant}/{message.Namespace}/{message.Topic}";
            var partitions = _admin.GetPartitionedMetadata(message.Tenant, message.Namespace, message.Topic);

            Setup(partitions.Body, topic);
            Receive <Akka.Actor.Terminated>(t =>
            {
                var children = Context.GetChildren();
                if (!children.Any())
                {
                    Context.System.Log.Info($"All children exited, shutting down in 5 seconds :{Self.Path}");
                    Self.GracefulStop(TimeSpan.FromSeconds(5));
                }
            });
            Receive <ReceivedMessage <T> >(m =>
            {
                _buffer.Post(m.Message);
            });
            Receive <Messages.Receive>(_ =>
            {
                if (_buffer.TryReceive(out var message))
                {
                    Sender.Tell(new AskResponse(message));
                }
                else
                {
                    Sender.Tell(new AskResponse(null));
                }
            });
        }
 public static Props Prop(CurrentEventsByTag message, BufferBlock <IEventEnvelope> buffer)
 {
     return(Props.Create(() => new CurrentEventsByTagActor(message, buffer)));
 }
Esempio n. 6
0
 public static Props Prop(CurrentEventsByTag <T> message, IActorRef client, IActorRef lookup, IActorRef cnxPool, IActorRef generator, ISchema <T> schema)
 {
     return(Props.Create(() => new CurrentEventsByTagActor <T>(message, client, lookup, cnxPool, generator, schema)));
 }