在Heroku上使用kue-scheduler和ParseServer

时间:2016-07-21 00:50:38

标签: heroku parse-platform redis kue

使用heroku redis插件在heroku上运行kue-scheduler,虽然我可以让kue作业工作,但似乎kue-scheduler需要在heroku redis环境中不允许某些redis配置。有没有人在Heroku环境中成功运行kue-scheduler。这是我的index.js文件的开头:

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');

var kue = require('kue-scheduler')
var queue = kue.createQueue({redis:
        'redis://h:***************@ec2-**-19-83-130.compute-1.amazonaws.com:23539'
        });

var job = queue.create('test', {
    title: 'Hello world'
  , to: 'j@example.com'
  , template: 'welcome-email'
}).save( function(err){
   if( !err ) console.log( job.id );
});

job.log('$Job %s run', job.id);

queue.every('30 seconds', job);

queue.process('test', function(job, done){
  test_function(job.data.title, done);
});

function test_function(title, done) {
  console.log('Ran test function with title %s', title)
  // email send stuff...
  done();
}

这是错误。

2016-07-21T00:46:26.445297+00:00 app[web.1]: /app/node_modules/parse-server/lib/ParseServer.js:410
2016-07-21T00:46:26.445299+00:00 app[web.1]:             throw err;
2016-07-21T00:46:26.445300+00:00 app[web.1]:             ^
2016-07-21T00:46:26.445417+00:00 app[web.1]: ReplyError: ERR unknown command 'config'
2016-07-21T00:46:26.445419+00:00 app[web.1]:     at parseError (/app/node_modules/redis-parser/lib/parser.js:161:12)
2016-07-21T00:46:26.445420+00:00 app[web.1]:     at parseType (/app/node_modules/redis-parser/lib/parser.js:222:14)
2016-07-21T00:46:26.466188+00:00 app[web.1]:

问题是heroku redis在我的redis基础设施上不允许配置选项。

如果某人取得了成功,请感谢任何建议。

2 个答案:

答案 0 :(得分:5)

设法解决了这个问题:

var queue = kue.createQueue(
                {redis: 'redis://xxxxxxxxxxxxx@ec2-50-19-83-130.compute-1.amazonaws.com:23539',
                 skipConfig: true
                });

只需要skipConfig参数

答案 1 :(得分:2)

我遇到了同样的问题,无法让kue-scheduler处理Heroku-Redis。为了解决这个问题,我使用了Heroku Add-on Redis Cloud

这允许您设置所需的Redis标记notify-keyspace-events,该标记在常规Heroku-Redis加载项上无法修改。设置此标志:

  1. 添加Redis Cloud heroku附加组件
  2. 转到heroku设置页面
  3. 在配置变量中显示配置变量
  4. 复制REDISCLOUD_URL,应该是redis://rediscloud:PASSWORD@xxx.redislabs.com:PORT_NUMBER
  5. 在终端中使用redis-cli -h xxx.redislabs.com -p PORT_NUMBER -a PASSWORD
  6. 中的变量输入REDISCLOUD_URL
  7. 连接后,请输入config set notify-keyspace-events Ex
  8. 您可以输入config get notify-keyspace-events
  9. 来验证是否设置正确
  10. 确保在致电REDISCLOUD_URL
  11. 时更新您的javascript代码以指向新的kue.createQueue()

    感谢@josephktcheung在这里的工作:https://github.com/lykmapipo/kue-scheduler/issues/46