All Projects → FoundatioFx → Foundatio.Samples

FoundatioFx / Foundatio.Samples

Licence: Apache-2.0 license
Foundatio Samples

Programming Languages

C#
18002 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Foundatio.Samples

Foundatio
Pluggable foundation blocks for building distributed apps.
Stars: ✭ 1,365 (+3914.71%)
Mutual labels:  queue, message-bus, jobs
Workq
Job server in Go
Stars: ✭ 1,546 (+4447.06%)
Mutual labels:  queue, jobs
Fennel
A task queue library for Python and Redis
Stars: ✭ 24 (-29.41%)
Mutual labels:  queue, jobs
Stevejobs
A simple jobs queue that just works (for Meteor.js)
Stars: ✭ 195 (+473.53%)
Mutual labels:  queue, jobs
Bull
Bull module for Nest framework (node.js) 🐮
Stars: ✭ 356 (+947.06%)
Mutual labels:  queue, jobs
Swoole Jobs
🚀Dynamic multi process worker queue base on swoole, like gearman but high performance.
Stars: ✭ 574 (+1588.24%)
Mutual labels:  queue, jobs
Flask Rq2
A Flask extension for RQ.
Stars: ✭ 176 (+417.65%)
Mutual labels:  queue, jobs
Message Bus
Go simple async message bus
Stars: ✭ 166 (+388.24%)
Mutual labels:  queue, message-bus
dispatcher
Dispatcher is an asynchronous task queue/job queue based on distributed message passing.
Stars: ✭ 60 (+76.47%)
Mutual labels:  queue, jobs
qless-php
PHP Bindings for qless
Stars: ✭ 25 (-26.47%)
Mutual labels:  queue, jobs
workq
A super tiny work queue
Stars: ✭ 38 (+11.76%)
Mutual labels:  queue, jobs
horizon-exporter
Export Laravel Horizon metrics using this Prometheus exporter.
Stars: ✭ 17 (-50%)
Mutual labels:  queue, jobs
joobq
JoobQ is a fast, efficient asynchronous reliable job queue and job scheduler library processing. Jobs are submitted to a job queue, where they reside until they are able to be scheduled to run in a computing environment.
Stars: ✭ 26 (-23.53%)
Mutual labels:  queue, jobs
spinach
Modern Redis task queue for Python 3
Stars: ✭ 46 (+35.29%)
Mutual labels:  queue, jobs
RabbitMQTools
PowerShell module containing cmdlets to manage RabbitMQ.
Stars: ✭ 27 (-20.59%)
Mutual labels:  queue, message-bus
Redis Smq
A simple high-performance Redis message queue for Node.js.
Stars: ✭ 230 (+576.47%)
Mutual labels:  queue, jobs
jobs
RoadRunner: Background PHP workers, Queue brokers
Stars: ✭ 59 (+73.53%)
Mutual labels:  queue, jobs
theeye-of-sauron
TheEye Dockers and QuickStart
Stars: ✭ 27 (-20.59%)
Mutual labels:  queue, jobs
hoardr
⚠️ ARCHIVED ⚠️ manage cached files
Stars: ✭ 19 (-44.12%)
Mutual labels:  caching
orkid-node
Reliable and modern Redis Streams based task queue for Node.js 🤖
Stars: ✭ 61 (+79.41%)
Mutual labels:  queue

Foundatio

Slack Status

A sample application that shows off some of the features of Foundatio. For all of the examples below, please take a look at the JavaScript console (Press F12 now) for client side messages via SignalR.

By default this example will use the in memory versions of Foundatio. In memory versions do not scale across processes or persist information across application restarts. To scale out out this example, please uncomment the RedisConnectionString in the web.config and ensure redis is installed.

Examples

To get started with the examples, please clone this repository and set the Web project as the startup project. Then press F5 to start debugging!

1. Caching

Attempt to get a guid from the cache. If the value is not cached the value will be populated after 5 seconds. This code makes a call to the ValuesController Get controller action

2. Jobs, Message Bus, Queues, Caching

Posts a guid to the ValuesController, this will save a file to storage with a new guid and enqueue a work item to a dedicated job (ValuesPostJob). This job will then dequeue the item and read the guid from storage and parse it. If it can be parsed it will be persisted to the cache and publish a notification on the message bus.

When you call Post Value you can then Get Value button to get the updated guid that was processed from the ValuesPostJob. Clicking this button multiple times will trigger the jobs to run multiple times and will also increment the metrics (visible from the debug window when running in memory versions).

This example shows off how jobs, queues, and the message bus work together.

3. Shared Jobs, Message Bus, Queues, Caching

Deletes an id from the cache by calling the ValuesController Delete controller action. Which enqueues a shared job work item (DeleteValueWorkItemHandler). Unlike dedicated jobs which are processing one job type, shared jobs can handle different job types and process them at anytime. This is great when you have long running tasks that don't happen very often, such as deleting an entity with many children.

The nice thing about shared jobs is that you can easily report the progress via the messagebus by calling the context.ReportProgress(percent, message);

Please note that if you are seeing duplicated messages reported to the console, this is because there are two instances of the shared jobs running. To fix this, you'll need to open the DeleteValueWorkItemHandler in the Core project and uncomment GetWorkItemLock to add locking to this job.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].