Мне было интересно, удалось ли создать услугу подписки до Mongo
через Get Event Store
? Возможно, я сформулировал это неправильно, но позвольте мне объяснить. В настоящее время у меня есть процесс, который записывает события в Mongo Database
с использованием NEventStore
. То, что я хотел бы сделать, - это услуга подписки, которая подписывается на Stream
в Mongo
.Служба подписки на Event Store на MongoDB
Не удалось найти что-либо в interweb об этом, в частности, однако, возможно ли это? Мой вопрос в двух словах, возможно, это вы можете смешивать и сопоставлять эти два вместе или для этого я должен написать свои события eventstore
, а не Mongo
? Возможно, я собираюсь сделать это неправильно, и есть альтернатива?
Я могу видеть, что мое событие написано, однако он не может вызвать EventAppeared
. Все это делается локально на моей машине.
Я попытался создать усеченную приложение, которое делает это:
Создайте подписку с помощью следующей
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) { }
я пишу событие в моей базе данных Монго через 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(); }
Вы говорили о GetEventStore? – tomliversidge
Извинения, да, я. –
У вас есть соединение mongodb как имя потока событий в GetEventStore. Это намеренно? Действительно ли ваш поток называется «mongodb: // localhost: 27017/Test»? – tomliversidge