首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis如何使用Rails和Sidekiq

Redis如何使用Rails和Sidekiq
EN

Stack Overflow用户
提问于 2014-10-26 20:10:36
回答 1查看 2.1K关注 0票数 2

问题:需要从Rails异步发送电子邮件。环境: Windows 7、Ruby 2.0、Rails 4.1、Sidekiq、Redis

在设置好一切之后,启动Sidekiq和Redis,我可以通过监视器看到排队到Redis的邮件请求:

代码语言:javascript
复制
1414256204.699674 "exec"
1414256204.710675 "multi"
1414256204.710675 "sadd" "queues" "default"
1414256204.710675 "lpush" "queue:default" "{\"retry\":true,\"queue\":\"default\",\"class\":\"Sidekiq::Extensions::DelayedMailer\",\"args\":[\"---\\n- !ruby/class 'UserMailer'\\n- :async_reminder\\n- - 673\\n\"],\"jid\":\"d4024c0c219201e5d1649c54\",\"enqueued_at\":1414256204.709674}"

但是mailer方法似乎从未被执行过。不会发送邮件,也不会显示任何日志消息。

Redis如何知道执行队列中的作业,以及是否需要在环境中设置其他内容才能知道应用程序驻留在哪里?

delayed_job是更好的解决方案吗?

我在一个窗口中启动了redis,在另一个窗口中启动了bundle exec sidekiq,在第三个窗口中启动了rails服务器。

如何获取和处理redis队列中的项?sidekiq是不是既把东西放在redis队列上,又检查是否添加了需要处理的东西?

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 20:30:12

Redis仅用于存储。它存储要完成的工作。它不执行任何操作。DelayedJob使用您的数据库来存储作业,而不是Redis。

Rails进程将新作业推送到Redis。

Sidekiq进程从Redis中弹出作业并执行它们。

MONITOR输出中,当Rails发送邮件时,您应该会看到LPUSH命令。您还应该看到来自Sidekiq的BRPOP命令。

您需要确保Rails和Sidekiq进程使用相同的Redis服务器、数据库编号和名称空间(如果有的话)。这是一个常见的问题,他们不这样做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26572820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档