Gofer.NET

针对 .NET Core 的分布式后台任务/工作的简易 C# API。「Easy C# API for Distributed Background Tasks/Jobs for .NET Core.」

Github stars Tracking Chart

Gofer.NET: Easy distributed tasks/jobs for .NET Core

Build Status
Nuget Version Number
Join the chat at https://gitter.im/Gofer-NET/Lobby

Documentation

Read the Docs

What is this?

This is a distributed job runner for .NET Standard 2.0 Applications.

Inspired by Celery for Python, it allows you to quickly queue code execution on a worker pool.

  • Use natural expression syntax to queue jobs for execution.

  • Queued jobs are persisted, and automatically run by the first available worker.

  • Scale your worker pool by simply adding new nodes.

  • Backed by Redis, all tasks are persistent.

Getting Started

Install the dotnet cli.

We recommend using the dotnet cli to get started, but it's not a necessity.

The dotnet cli is part of the .NET Core SDK.

Start a Redis instance.

We recommend using docker to start a local Redis instance for testing. Setting up a production-level Redis instance is out of the scope of this documentation.

$ docker run -d -p 127.0.0.1:6379:6379 redis:4-alpine

Create a project.

Open up a terminal and create a new console project to get started.

$ mkdir myProject && cd myProject
$ dotnet new console

Add the Gofer.NET NuGet package.

$ dotnet add package Gofer.NET --version 1.0.0-*

Queue up some jobs.

This example Program.cs shows how to queue jobs for the worker pool to process, then start a worker to go and run them.

Some important notes:

  • Workers would usually be on a separate machine from the code queueing the jobs, this is purely to give an example.

  • More workers can be added at any time, and will start picking up jobs off the queue immediately.

public class Program
{
    public static async Task Main(string[] args)
    {
        var redisConnectionString = "127.0.0.1:6379";
        
        // Create a Task Client connected to Redis
        var taskClient = new TaskClient(TaskQueue.Redis(redisConnectionString));
        
        // Queue up a Sample Job
        await taskClient.TaskQueue.Enqueue(() => SampleJobFunction("Hello World!"));
        
        // Start the task listener, effectively turning this process into a worker.
        // NOTE: This will loop endlessly waiting for new tasks.
        await taskClient.Listen();
    }
    
    private static void SampleJobFunction(object value)
    {
        Console.WriteLine(value.ToString());
    }
}

Read the Docs for more details.

Overview

Name With Ownerbrthor/Gofer.NET
Primary LanguageC#
Program languageC# (Language Count: 2)
Platform
License:MIT License
Release Count0
Created At2017-10-20 01:08:38
Pushed At2022-12-08 00:57:54
Last Commit At2021-02-04 16:28:25
Stargazers Count535
Watchers Count22
Fork Count49
Commits Count78
Has Issues Enabled
Issues Count23
Issue Open Count11
Pull Requests Count27
Pull Requests Open Count5
Pull Requests Close Count4
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top