定制 keboola/job-queue-internal-api-php-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

keboola/job-queue-internal-api-php-client

Composer 安装命令:

composer require keboola/job-queue-internal-api-php-client

包简介

Client for internal job queue API

README 文档

README

PHP client for the Internal Job Queue API (API docs).

Usage

composer require keboola/job-queue-internal-api-php-client
use Keboola\JobQueueInternalClient\Client;

$storageClientFactory = new JobFactory\StorageClientFactory('http://connetion.keboola.com/');
$objectEncryptorFactory = new ObjectEncryptorFactory('key-id', 'us-east-1', '', '');
$jobFactory = new JobFactory($storageClientFactory, $objectEncryptorFactory);
$client = new Client(
    new NullLogger(),
    $jobFactory,
    'http://internal.queue.api/',
    'testQueueToken'
);
$client->getJobData('123');
$client->postJobResult('123', 'success', ['images' => ['digests' => []]]);

Atomic job result updates

patchJobResultAtomically() performs an optimistic-locking read-modify-write of a job's result document. It reads the current result and its resultVersion, runs your mutator, and writes it back guarded by that version. The versioned write merges the returned keys into the current server-side result (the same array_merge semantics as the non-versioned write), only made atomic by the version check. On a version conflict (HTTP 409, i.e. a concurrent writer changed the result in between) it automatically re-reads and retries a bounded number of times; if the conflict still cannot be resolved within the retry budget it throws a ResultVersionConflictException rather than overwriting the concurrent change.

The mutator receives the current result array and must return a \JsonSerializable whose jsonSerialize() yields an array. The returned keys are merged into the current result — it is not a full replace, so keys you omit are preserved (you cannot delete a key this way):

use Keboola\JobQueueInternalClient\Result\GenericJobResult;

$job = $client->patchJobResultAtomically('123', function (array $current): GenericJobResult {
    $current['processedRows'] = ($current['processedRows'] ?? 0) + 1;
    return new GenericJobResult($current);
});

GenericJobResult is a trivial \JsonSerializable wrapper for callers that do not have their own result value object.

Development

Prerequisites:

  • configured az and aws CLI tools (run az login and aws configure --profile keboola-dev-platform-services)
  • installed GCP CLI gcloud (and run gcloud auth login or gcloud auth application-default login)
  • installed terraform (https://www.terraform.io) and jq (https://stedolan.github.io/jq) to setup local env
  • intalled docker and docker compose to run & develop the app

TL;DR:

export NAME_PREFIX= # your name/nickname to make your resource unique & recognizable

cat <<EOF > ./provisioning/local/terraform.tfvars
name_prefix = "${NAME_PREFIX}"
EOF

cat <<EOF > .env.local
TEST_HOSTNAME_SUFFIX=keboola.com
TEST_STORAGE_API_URL=https://connection.keboola.com
TEST_STORAGE_API_TOKEN=
TEST_STORAGE_API_TOKEN_MASTER=
EOF

terraform -chdir=./provisioning/local init -backend-config="key=job-queue-internal-api-php-client/${NAME_PREFIX}.tfstate"
terraform -chdir=./provisioning/local apply
./provisioning/local/update-env.sh azure # or aws

License

MIT licensed, see LICENSE file.

统计信息

  • 总下载量: 13.13k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 14
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 7
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-05-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固