Rails Sidekiq worker 中调用 Java

thxagain · 2016年12月05日 · 最后由 yakjuly 回复于 2016年12月06日 · 2032 次阅读

是这样的,之前有看到论坛有分享,关于使用 go 重写了 sidekiq 的 worker,使用到了开源的工程

我现在的需求是:异步队列中需要调用公司的云服务,SDK 只有 Java Python Go...没有 Ruby

现在想的方案是,要么使用 Ruby 自己写一套 SDK,要么把 sidekiq 的 worker 改为 Java 去实现

如果有现成的 Java 版 sidekiq 的 worker 实现,那么方案二可能是最快的,但是一时又没有搜索到,所以想问问大家的建议。

让你们公司那个服务提供 HTTP 的接口不就好了?

#1 楼 @huacnlee

是可以的,也是有 HTTP 接口的,只是步骤会比较多,比如需要先认证,再把文件分片之类的。这也是一条考虑的途径,但毕竟没有调用现成的 SDK 方便。

#2 楼 @mimosa JRuby 有示例么?

jar 实现,打成可执行 jar,ruby 可以直接 shell 执行。

#5 楼 @mimosa 好的,谢谢,我参考下,没有用过 jRuby 呢~

#6 楼 @fuyang 这也算一种思路~

使用 rjb,

  1. 可以直接在项目里用 rjb,用 ruby 调用 java 的代码。写在项目代码里,但是 sidekiq 可能不能用多线程模式,容易报错
  2. 用 ruby 写一个脚本文件 require rjb 和 java 代码,把 Java 的 SDK 简单封装一下,项目里 sidekiq 调用系统命令去执行这个 ruby 脚本,获得结果。不影响项目的稳定性,sidekiq 多线程模式可以用,但单个 API 调用返回时间稍长。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号