This is an ultralight pub-sub system designed to be used as a routing system for various pluggable applications.
The daemon is provided as a proof-of-concept application which uses the Arke Core.
To work with Arke run: $ source env.sh
Straightforward in-memory pubsub framework for Go
License: MIT License
When a client initiates a subscription request it can be placed in the buffered channel waiting for processing by the hub's event loop. If the hub is cancelled while the subscription is waiting, then the routine attached to the subscription is orphaned and the client is never notified of subscriber-close.
This should be rearchitected so that subscribing clients can always be assured their channel will be closed upon hub cancellation.
Interleaving may happen between publishers or subscribers, but for a given pub/sub pair, messages should always be delivered in-order. This is not currently working.
Currently subscriber.Send doesn't respect ctx.Done(). This should be fixed.
Likely a race-condition. Haven't touched this in a while and I suspect the logic to be broken (especially since underlying libraries / language may have adjusted semantics in the interim).
--- FAIL: TestHubCancellationClosesSubscription (4.00s)
hub_test.go:152: Timed out (4s) waiting for cancel() to propagate to subscriber.
FAIL
FAIL github.com/akesling/arke/interchange 4.015s
The system currently uses a fixed-threshold, global-pause, collection methodology which is has expense proportional to the size of the topic trie. This has the potential to cause long pauses for large tries.
The other naive alternative is to collect a subscriber whenever it dies, but this has the potential to cause topic-collapsing of arbitrary complexity at time of subscriber-death and could thus also starve out publications.
The real solution to this should be to allow concurrent collection in the topic trie, preferably in a way that orthogonal new subscriptions aren't blocked by active collection.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.