// 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); }
// 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); } }
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); }
private void SaveEntity(UpsertMessage message) { _mongo.Insert(message); }