/
Configuration.swift
52 lines (48 loc) · 1.9 KB
/
Configuration.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//===----------------------------------------------------------------------===//
//
// This source file is part of the Hummingbird server framework project
//
// Copyright (c) 2021-2021 the Hummingbird authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See hummingbird/CONTRIBUTORS.txt for the list of Hummingbird authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import NIOCore
@preconcurrency import RediStack
extension RedisQueue {
/// what to do with failed/processing jobs from last time queue was handled
public enum JobInitialization: Sendable {
case doNothing
case rerun
case remove
}
/// Redis Job queue configuration
public struct Configuration: Sendable {
let queueKey: RedisKey
let processingQueueKey: RedisKey
let failedQueueKey: RedisKey
let pendingJobInitialization: JobInitialization
let processingJobsInitialization: JobInitialization
let failedJobsInitialization: JobInitialization
let pollTime: Duration
public init(
queueKey: String = "_hbJobQueue",
pollTime: Duration = .milliseconds(100),
pendingJobInitialization: JobInitialization = .doNothing,
processingJobsInitialization: JobInitialization = .rerun,
failedJobsInitialization: JobInitialization = .doNothing
) {
self.queueKey = RedisKey(queueKey)
self.processingQueueKey = RedisKey("\(queueKey)Processing")
self.failedQueueKey = RedisKey("\(queueKey)Failed")
self.pollTime = pollTime
self.pendingJobInitialization = pendingJobInitialization
self.processingJobsInitialization = processingJobsInitialization
self.failedJobsInitialization = failedJobsInitialization
}
}
}