GithubHelp home page GithubHelp logo

Comments (4)

jsonberry avatar jsonberry commented on April 24, 2024 1

Ah yes @kamilmysliwiec my bad, this was all simply due to using a mergeMap and returning a hot observable.

This was just an Rx oversight on my part, thank you for taking the time to respond.

from cqrs.

jsonberry avatar jsonberry commented on April 24, 2024 1

@mark-beeby If you are pulling in the eventBus into a Saga, just like I had in these examples, you'll need to use something like a take(1).

This is because that Observable, the one that's being returned inside the mergeMap, needs to complete, and if you return a hot Observable (like a Subject) it won't complete. There are some nuances there, but I'm just trying to get straight to the point :)

If you don't "complete", every time the Saga runs, a new subscription to the eventBus is created and is added to any previous times the Saga ran, thus you get multiple events. When you take(1), it'll close the subscription on the eventBus and you won't pile up with events you aren't expecting.

cold Observables, like of('foo') or from(apiCall) would complete automatically thus bypassing the "additional" and unnecessary subscriptions.

from cqrs.

kamilmysliwiec avatar kamilmysliwiec commented on April 24, 2024

Inside your SomeWriteModel.create method, I'd suggest checking your array of pending events (this.getUncommittedEvents() - this method is inherited from AgreggateRoot). If this array is empty, your saga logic is probably wrong. Otherwise, commit() works unexpectedly (doesn't clean the array after publishing events).

from cqrs.

mark-beeby avatar mark-beeby commented on April 24, 2024

@jsonberry did you have any hints on returning a cold observable? New to Rx here and struggling with the same problems.
Cheers!

from cqrs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.