Skip to content
This repository has been archived by the owner. It is now read-only.
develop
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

Hangfire.Firebase

Official Site Latest version Build status

This repo will add a Google Firebase storage support to Hangfire - fire-and-forget, delayed and recurring tasks runner for .NET. Scalable and reliable background job runner. Supports multiple servers, CPU and I/O intensive, long-running and short-running jobs.

Installation

Hangfire.Firebase is available as a NuGet package. Install it using the NuGet Package Console window:

PM> Install-Package Hangfire.Firebase

Usage

Use one the following ways to initialize FirebaseStorage

GlobalConfiguration.Configuration.UseFirebaseStorage("<url>", "<authSecret>");

Firebase.FirebaseStorage firebaseStorage = new Firebase.FirebaseStorage("<url>", "<authSecret>");
GlobalConfiguration.Configuration.UseStorage(firebaseStorage);

// customize any options
Firebase.FirebaseStorageOptions firebaseOptions = new Firebase.FirebaseStorageOptions
{
    Queues = new[] { "default", "critical" },
    RequestTimeout = System.TimeSpan.FromSeconds(30),
    ExpirationCheckInterval = TimeSpan.FromMinutes(15),
    CountersAggregateInterval = TimeSpan.FromMinutes(1),
    QueuePollInterval = TimeSpan.FromSeconds(2)
};
Firebase.FirebaseStorage firebaseStorage = new Firebase.FirebaseStorage("<url>", "<authSecret>", firebaseOptions);
GlobalConfiguration.Configuration.UseStorage(firebaseStorage);

Firebase Rule Setup

Under the Firebase database, please update the json so .indexOn is aviable for query. Note hangfire is the parent node. If you had additional queue, repeat the .indexOn for the queue.

{
  "rules": {
    "hangfire": {
      "servers": {
        ".indexOn": [ "_id", "server_id" ]
      },
      "queue": {
        "default": {
          ".indexOn": [ "_id", "server_id" ]
        },
        "critical": {
          ".indexOn": [ "_id", "server_id" ]
        }
      },
      "jobs": {
        ".indexOn": [ "_id", "server_id", "state_name" ]
      },
      "sets": {
        ".indexOn": [ "key" ]
      },
       "lists": {
        ".indexOn": [ "key" ]
      }
    },
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Questions/Problems

Open-source project are developing more smoothly, when all discussions are held in public.

If you have any questions or problems related to Hangfire.Firebase itself or this storage implementation or want to discuss new features, please create under issues and assign the correct label for discussion.

If you've discovered a bug, please report it to the GitHub Issues. Detailed reports with stack traces, actual and expected behavours are welcome.

About

Google Firebase storage provider for Hangfire

Topics

Resources

License

Packages

No packages published

Languages