-
Notifications
You must be signed in to change notification settings - Fork 16
eqxFc: Location with Long Running Inventory #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
fe578fe to
d1bd9da
Compare
7c606dd to
5d69f03
Compare
32e2cdd to
6b328de
Compare
b1913ed to
2bb7ee3
Compare
acee782 to
e1e5aa6
Compare
4025bb0 to
65c0b3c
Compare
c68d2e6 to
8503ac5
Compare
b9f4d4b to
1b20fef
Compare
| - [`eqxweb`](equinox-web/README.md) - Boilerplate for an ASP .NET Core 2 Web App, with an associated storage-independent Domain project using [Equinox](https://github.com/jet/equinox). | ||
| - [`eqxwebcs`](equinox-web-csharp/README.md) - Boilerplate for an ASP .NET Core 2 Web App, with an associated storage-independent Domain project using [Equinox](https://github.com/jet/equinox), _ported to C#_. | ||
| - [`eqxtestbed`](equinox-testbed/README.md) - Host that allows running back-to-back benchmarks when prototyping models using [Equinox](https://github.com/jet/equinox), using different stores and/or store configuration parameters. | ||
| <a name="eqxFc"></a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this HTML anchor tag a side effect from an IDE or something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nope, just so I can link to a section within the readme, i.e. github.com/jet/equinox#eqxfc - changelog.md uses it also to provide an alias thats better than default generated ones
The
eqxfctemplate hosts aggregates based on some patterns relevant to Fulfilment Centers. The goal is more to illustrate techniques of unit, integration testing and decoupling than necessarily to represent the exact business logic one might need.This PR (originally developed in jet/equinox#181) illustrates an approach to deal with long-lived streams without having them actually be infinite, which involves:
LocationEpochthat maintains a rolling balanceClosedevent, after which no writers are permitted to writeLocationSeriesaggregate which holds a pointer to verified active epoch (competing readers/writers read this optimistically on a cached basis; in the event that they're behind, they'll compete to log the successful commencement of a new epoch, which cannot happen before theCarriedForwardevent for the successor epoch has been committed)Inventory.Transactionaggregate that fulfills two purposesInventorySeriesb)InventoryEpoch, which are used to (idempotently) record the conclusion of each transfer/adjustment on a global summary streamInventory.Process.Servicewhich is a Process Manager that orchestrates the work involved in the transactions7. a/equinox-shipping bears a more complete version than that which existed here; theWatchdogservice that listens for stalled transactions, using theInventory.Process.Serviceto drive a given flow to a conclusion if it has been determined to be stalled (open for 10s but not completed)Drivemember will remain here as a placeholder, but there's plenty interesting stuff in here without throwing yet another concept into the mixSee #50 for a simplified edition which removes the
LocationSeriesandCarriedForwardconcepts in order to make it easier to inspect the mechanism