当前位置:  软件>JavaScript软件

Node.js 分布式作业队列 Martinet

    来源:    发布时间:2014-12-25

    本文导语:  Martinet 是分布式任务管理工具。 Martinet 数据库后端,基于 zeroMQ 的分布式任务管理系统。Martinet 可以使用任意的 sequelize.js 兼容的数据库(默认是 SQLite)。 Martinet 使用 push-pull 管理模式来确保在分布式的环境下高效的运行。 安...

Martinet 是分布式任务管理工具。

Martinet 数据库后端,基于 zeroMQ 的分布式任务管理系统。Martinet 可以使用任意的 sequelize.js 兼容的数据库(默认是 SQLite)。

Martinet 使用 push-pull 管理模式来确保在分布式的环境下高效的运行。

安装

npm install martinet

使用

Martinet 包括两个部分: Martinet 对象,处理调度和调度任务; Worker 对象,接受任务和定义。

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');
创建任务
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'});
定义任务
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 监听端口:

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

后端数据库的连接信息,使用 sequelize.js 选项

默认:

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);



    
 
 

您可能感兴趣的文章:

  • 分布式 RPC 框架 zerorpc-node
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.xml.xpath类xpathconstants成员方法: node定义参考
  • iOS上的Node.js Node.app
  • java命名空间javax.xml.soap接口node成员方法: getparentelement定义参考
  • Node.JS XML 解析 node-elementtree
  • java命名空间javax.xml.soap接口node成员方法: detachnode定义参考
  • 七牛 Node.js SDK Node-qiniu
  • java命名空间javax.xml.soap接口node成员方法: recyclenode定义参考
  • node.js的.net扩展 node.net
  • java命名空间java.util类uuid的类成员方法: node定义及介绍
  • Node.js 的 FTP 客户端 node-ftp
  • java命名空间javax.xml.soap接口node成员方法: setparentelement定义参考
  • Node.js在Android上的移植 node4android
  • java命名空间javax.accessibility类accessiblerelation的类成员方法: child_node_of定义及介绍
  • Node.js的C++移植版本 Node.native
  • java命名空间javax.xml.soap接口node成员方法: getvalue定义参考
  • Node.js 数据库实时监控库 node-dbmon
  • java命名空间javax.accessibility类accessiblerelation的类成员方法: child_node_of_property定义及介绍
  • Redis的Node.js扩展包 node_redis
  • java命名空间javax.xml.soap接口node成员方法: setvalue定义参考
  • 基于Node.js的Java虚拟机 node-jvm
  • java命名空间java.util.prefs类preferences的类成员方法: node定义及介绍
  • Node.js 的 SOAP 客户端和服务器 Node-SOAP


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3