<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MartinetNode.js 分布式作業(yè)隊(duì)列

          聯(lián)合創(chuàng)作 · 2023-09-29 15:21

          Martinet 是分布式任務(wù)管理工具。

          Martinet 數(shù)據(jù)庫(kù)后端,基于 zeroMQ 的分布式任務(wù)管理系統(tǒng)。Martinet 可以使用任意的 sequelize.js 兼容的數(shù)據(jù)庫(kù)(默認(rèn)是 SQLite)。

          Martinet 使用 push-pull 管理模式來(lái)確保在分布式的環(huán)境下高效的運(yùn)行。

          安裝

          npm install martinet

          使用

          Martinet 包括兩個(gè)部分: Martinet 對(duì)象,處理調(diào)度和調(diào)度任務(wù); Worker 對(duì)象,接受任務(wù)和定義。

          Martinet

          安裝

          var Martinet = require('martinet');
          var martinet = new Martinet();
          // Martinet allows you to create multiple workers
          // so that you can keep worker code in separate 
          // logical 
          modules.martinet.addWorker('WORKER_NAME_1', 'WORKER_PORT_1');
          martinet.addWorker('WORKER_NAME_2', 'WORKER_PORT_2');

          創(chuàng)建任務(wù)

          martinet.execute({
              worker: 'WORKER_NAME',
              name: 'task_name',
              description: 'Do a thing' // Used in the backend so it's easier to lookup tasks later
          }, args);
          // args JSON object of named arguments, so like
          // {
          //    thing_id: 1   
          // }
          //
          // this object gets serialized and passed to the Worker
          //
          
          martinet.schedule('in 20 minutes', {
              worker: 'WORKER_NAME',
              name: 'task_name',
              description: 'Do a thing in 20 minutes'}, args);
          martinet.every('30 minutes', {
              worker: 'WORKER_NAME',
              name: 'task_name',
              description: 'Do a thing every half hour',
              run_at: 'midnight' // optional time to start the recurring task}, args);

          Workers

          安裝

          var MartinetWorker = require('martinet').Worker;var WORKER_PORT = 3000;var worker = new MartinetWorker(WORKER_PORT, {
              martinet_url: '127.0.0.1',
              martinet_port: '8089'});

          定義任務(wù)

          worker.on('task_name', function(taskId, data, callback) {
              // do a thing.
          
              // if it's successful, callback(),
              // if there's an error, callback(err)});
          

          端口

          Martinet 的 pull socket 監(jiān)聽端口:

          var Martinet = require('martinet');var options = {
              port: 8009};var martinet = new Martinet(options);

          DB

          后端數(shù)據(jù)庫(kù)的連接信息,使用 sequelize.js 選項(xiàng)

          默認(rèn):

          var Martinet = require('martinet');var options = {
              db: {
                database: 'martinet-db',
                username: process.env.USER,
                password: null,
                options: {
                  dialect: 'sqlite',
                  storage: 'martinet.db',
                  logging: false,
                  omitNull: true
                },
                sync: true
              }};var martinet = new Martinet(options);

          使用 postgres:

          var Martinet = require('martinet');var options = {
              db: {
                database: 'martinet-db',
                username: process.env.USER,
                password: null,
                options: {
                  dialect: 'postgres',
                  port: 5432,
                  host: 'database.host'
                  logging: false,
                  omitNull: true
                },
                sync: true
              }};var martinet = new Martinet(options);
          

           

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  51久久国产露脸精品国产 | 国产黄色片在线免费观看 | 亚洲国产毛片 | 九七人妻 | av中文字幕在线播放 |