У меня есть гибридное веб-приложение, которое запускает файл WAR WAR и файл WAR JRuby в том же Tomcat.Java для JRuby для Resque
Мы решили использовать (JRuby) Resque в качестве нашей очереди заданий. Вызов епдиеих работ выглядит следующим образом:
Resque.enqueue(FooWorker, 111)
где FooWorker класс работника определяется на и используются боковым JRuby (и включено в WAR файл JRuby), и он вызывается грабли задача JRuby Resque когда он обрабатывает задание из очереди.
Я хотел бы предоставить Java-код возможность запускать задачи в очереди Resque для обработки классом JRuby FooWorker.
Я взглянул на код Томми Чэна по телефону https://github.com/tc/call-jruby-from-java-example. 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, а файл - app/workers/foo_worker.rb.
Что нужно сделать, чтобы обеспечить компилятор jruby для доступа к обоим классы FooWorker и Resque JRuby для правильной компиляции кода?
хороший! спасибо за указание jesque –