Mongo
経由でサブスクリプション サービスを作成できるかどうか疑問に思っていましたGet Event Store
。おそらく私はこれを間違って表現しましたが、説明させてください。Mongo Database
現在、イベントをusingに書き込むプロセスがありますNEventStore
。私がやりたいのは、にサブスクライブするサブスクリプション サービスを用意することStream
ですMongo
。
特にこれについてインターウェブ上で何も見つけることができませんでしたが、これは可能ですか? 一言で言えば、私の質問はおそらく、2つを組み合わせて一致させることができますか、またはこれを行うには、イベントを書く必要があり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 を介して mongo データベースにイベントを書き込みます
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(); }