Je me demandais s'il était possible de créer un service d'abonnement à Mongo
via Get Event Store
? Peut-être que je l'ai mal formulé mais laissez-moi vous expliquer. J'ai actuellement un processus qui écrit des événements à Mongo Database
en utilisant NEventStore
. Ce que je voudrais faire est d'avoir un service d'abonnement qui souscrit à un Stream
dans Mongo
.Event Store service d'abonnement à MongoDB
Vous n'avez pas été en mesure de trouver quoi que ce soit sur l'interweb en particulier, mais est-ce possible? Ma question en un mot, peut-être est-ce que vous pouvez mélanger et assortir les deux ensemble ou pour ce faire, je dois écrire mes événements à eventstore
par opposition à Mongo
? Peut-être, je vais à propos de ce tort et il y a une alternative?
Je peux voir mon événement en cours d'écriture mais il ne parvient pas à déclencher EventAppeared
. Tout cela est fait localement sur ma machine pour le moment.
J'ai essayé de créer un dépouillé application qui fait cela:
Créer un abonnement en utilisant les éléments suivants
using (var connection = EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 1113))) { connection.SubscribeToStreamAsync(@"mongodb://localhost:27017/Test", false, EventAppeared, SubscriptionDropped); var repository = new NEventStoreRepository(); repository.Write(new SomethingHasHappened("Hello")); Console.ReadLine(); } private static void SubscriptionDropped(EventStoreSubscription arg1, SubscriptionDropReason arg2, Exception arg3) { } private static void EventAppeared(EventStoreSubscription arg1, ResolvedEvent arg2) { }
J'écris un événement à ma base de données de mongo via NEventStore
public void Write(object @event) { var id = Guid.NewGuid(); using (var scope = new TransactionScope()) { using (var store = WireupEventStore()) { using (var stream = store.OpenStream(id.ToString(), 0, int.MaxValue)) { stream.Add(new EventMessage { Body = @event }); stream.CommitChanges(Guid.NewGuid()); scope.Complete(); } } } Console.ReadKey(); } private static IStoreEvents WireupEventStore() { return Wireup .Init() .LogToOutputWindow() .UsingMongoPersistence("NEventStore.MongoDB", new DocumentObjectSerializer()) .InitializeStorageEngine() .UsingJsonSerialization() .Build(); }
Parlez-vous de GetEventStore? – tomliversidge
Excuses, oui je suis. –
Vous avez votre connexion mongodb comme nom de votre flux d'événements dans GetEventStore. Est-ce intentionnel? Votre flux s'appelle-t-il réellement "mongodb: // localhost: 27017/Test"? – tomliversidge