私は、同じTomcatでJava WARファイルとJRuby WARファイルを実行するハイブリッドWebアプリケーションを持っています。Java to JRuby to Resque
私たちはジョブキューとして(JRuby)Resqueを使うことに決めました。ジョブをキューへの呼び出しは次のようになります。
FooWorkerは、上で定義し、JRubyの側で使用(およびJRubyのWARファイルに含まれる)労働者のクラスであり、それはJRubyのResqueのrakeタスクによって呼び出されるResque.enqueue(FooWorker, 111)
それはキューからジョブを処理するときです。
JRuby FooWorkerクラスで処理するResqueキューのエンキュー機能をJavaコードに与えたいと思います。
私はhttps://github.com/tc/call-jruby-from-java-exampleでTommy Chengのコードを見ました。 javaファイル
//JavaInterfaceExample.java
interface JavaInterfaceExample{
int add(int a, int b);
}
とルビーファイル
#JrubyAdderImpl.rb
require 'java'
class JrubyAdderImpl
include Java::JavaInterfaceExample
java_signature 'int add(int, int)'
def add(a, b)
a+b
end
end
私は私のコードは次のようになりますことを疑う: javaファイル
//ResqueInterfaceExample.java
interface ResqueInterfaceExample{
int resque_enqueue_foojob(int a);
}
ルビーファイル
#JrubyResqueImpl.rb
require 'java'
require 'resque'
class JrubyResqueImpl
include Java::ResqueInterfaceExample
java_signature 'int resque_enqueue_foojob(int)'
def resque_enqueue_foojob(a)
Resque.enqueue(FooWorker, a)
end
end
My FooWorkerは、railsアプリケーション用の展開されたwarファイルディレクトリにあるクラスで、ファイルはapp/workers/foo_worker.rbです。
jrubyコンパイラが両方にアクセスできるようにするにはコードを正しくコンパイルするためのFooWorkerとResque JRubyクラス?
優秀!ジェスケを指摘してくれてありがとう –