#api-bindings #server-api #job-server #work-server

bin+lib faktory

Faktory 无语言限制工作服务器的 API 绑定

36 个版本

0.12.5 2024年2月18日
0.12.1 2022年9月17日
0.12.0 2022年5月28日
0.11.1 2021年4月27日
0.8.8 2017年11月14日

#1333 in 异步

Download history 80/week @ 2024-04-09 33/week @ 2024-04-16 44/week @ 2024-04-23 36/week @ 2024-04-30 8/week @ 2024-05-07 43/week @ 2024-05-14 32/week @ 2024-05-21 50/week @ 2024-05-28 73/week @ 2024-06-04 93/week @ 2024-06-11 113/week @ 2024-06-18 91/week @ 2024-06-25 284/week @ 2024-07-02 67/week @ 2024-07-09 23/week @ 2024-07-16 54/week @ 2024-07-23

440 每月下载量

MIT/Apache

135KB
2.5K SLoC

faktory-rs

Crates.io Documentation Codecov dependency status

Faktory 工作员和作业生产者的 API 绑定。

此 crate 提供了无语言限制的 Faktory 工作服务器的 API 绑定。有关工作服务器的更详细系统概述、作业是什么以及它们是如何调度的信息,请参阅 Faktory 文档。

系统概述

从高层次来看,Faktory 有两个主要概念:作业和工作者。作业是客户端想要执行的工作,而工作者是最终执行这些作业的事物。客户端将作业排队,Faktory 将作业发送到可用的工作者(如果他们都忙,则等待),工作者执行作业,最终向 Faktory 报告作业已完成。

作业是自包含的,包括作业 类型(一个字符串)、作业的参数以及一些元数据。当作业被调度执行时,工作者会得到这些信息,并使用作业类型来确定如何执行作业。您可以认为作业执行是一个远程过程调用(RPC),其中作业类型是函数的名称,而作业参数是该函数的参数。

在这个 crate 中,您将找到用于提交作业(生产作业的客户端)和执行作业(消费作业的工作者)的绑定。前者可以通过创建 Producer 来完成,而后者使用 Consumer 完成。请参阅每个的文档以获取更多关于如何使用它们的详细信息。

加密连接(TLS)

要连接到使用 TLS 托管的 Faktory 服务器,请添加 tls 功能,并参阅 TlsStream 的文档,它可以用于 Producer::connect_withConsumer::connect_with

示例

如果您想向 Faktory 提交 作业,请使用 Producer

use faktory::{Producer, Job};
let mut p = Producer::connect(None).unwrap();
p.enqueue(Job::new("foobar", vec!["z"])).unwrap();

如果您想从 Faktory 接收 作业,请使用 Consumer

use faktory::ConsumerBuilder;
use std::io;
let mut c = ConsumerBuilder::default();
c.register("foobar", |job| -> io::Result<()> {
    println!("{:?}", job);
    Ok(())
});
let mut c = c.connect(None).unwrap();
if let Err(e) = c.run(&["default"]) {
    println!("worker failed: {}", e);
}

在本地运行测试套件

首先确保“Factory”服务已在您的机器上运行并接受连接。要启动它,请使用 Factory 容器并通过 docker 运行

docker run --rm -it -v faktory-data:/var/lib/faktory -p 127.0.0.1:7419:7419 -p 127.0.0.1:7420:7420 contribsys/faktory:latest /faktory -b :7419 -w :7420

之后运行测试

FAKTORY_URL=tcp://127.0.0.1:7419 cargo test --all-features --locked --all-targets

请注意,对于端到端测试,设置“FAKTORY_URL”环境变量是必需的,以避免跳过测试。

假设您已安装 make 并运行了 docker 守护程序,您可以使用 make faktory 命令启动一个 Faktory 容器。之后,运行 make test/e2e 来运行端到端测试套件。如果不再需要,可以使用 make faktory/kill 命令删除容器。

要为 crate 的 tls 功能运行端到端测试,请确保您已安装了 compose docker 插件。运行 make faktory/tls 命令以在 ssl 终止的情况下在 NGINX 后启动 Faktory,然后运行 make test/e2e/tls。要删除容器,请运行 make faktory/tls/kill

依赖项

~4–15MB
~218K SLoC