Ява в JRuby в Resque - PullRequest
       12

Ява в JRuby в Resque

1 голос
/ 14 февраля 2012

У меня есть гибридное веб-приложение, которое запускает файл WAR Java и файл WAR JRuby в том же Tomcat.

Мы решили использовать (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);
}

и ruby-файле

#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);
}

файл ruby ​​

#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

Мой FooWorker - это класс, который находится в разорванном каталоге файлов войны для приложения rails, и файл app / worker/foo_worker.rb

Что мне нужно сделать, чтобы компилятор jruby имел доступ к классам FooWorker и Resque JRuby для правильной компиляции кода?

1 Ответ

5 голосов
/ 25 мая 2012

Я не уверен насчет Tomcat, но я знаю, что с помощью Jetty (другого контейнера сервлета) вы можете скомпилировать код jruby в jar-файл и поместить его в каталог lib контейнера.

Или проверить этоproject https://github.com/gresrun/jesque

"Jesque - это реализация Resque в Java. Он полностью совместим с реализациями Ruby и Node.js (Coffee-Resque)."

Позволяет ставить в очередьрабочие места родом из Явы, чтобы восстановить.Я этим не пользовался, но выглядит многообещающе.

...