示例#1
0
        // Send message to projection actor
        private void UpdateProjection(UpsertMessage msg)
        {
            var target    = _cluster.State.Members.First(e => e.HasRole("projection"));
            var targetUrl = $"{target.Address}/user/{ActorNames.Projection}";

            Context.ActorSelection(targetUrl).Tell(msg);
        }
示例#2
0
        // Add it to mongodb
        private void SaveUpsert(UpsertMessage msg)
        {
            if (_mongoActor == ActorRefs.Nobody)
            {
                _mongoActor = Context.ActorOf(
                    Props.Create <MongoActor>(_injector)
                    .WithRouter(new RoundRobinPool(5)), "mongo_insert");
            }

            _mongoActor.Tell(msg);
        }
        public void OnEvent(UpsertMessage message)
        {
            if (message.Entity is null)
            {
                return;
            }

            _log.Info($"Processing [{message.Type}] id: " + message.CollectionId);
            if (message.Entity is Artist a)
            {
                GetArtistActor().Tell(a);
            }
            else if (message.CollectionId > 0)
            {
                GetAlbumActor().Tell(message);
            }
        }
示例#4
0
        public void OnImportEntity(ImportEntityMessage message)
        {
            var row = message.EntityRow;

            if (row is null)
            {
                return;
            }

            // Serializes according to ImportEntityType
            UpsertMessage toInsert = message.Type switch
            {
                Artist => UpsertArtist.FromRow(row),
                ArtistCollection => UpsertArtistCollection.FromRow(row),
                Collection => UpsertCollection.FromRow(row),
                CollectionMatch => UpsertCollectionMatch.FromRow(row),
                _ => throw new System.NotImplementedException(),
            };

            _log.Info($"New {message.Type} to update");
            SaveUpsert(toInsert);
            UpdateProjection(toInsert);
        }
示例#5
0
 private void SaveEntity(UpsertMessage message)
 {
     _mongo.Insert(message);
 }