Преобразование кода Java в JRuby
Я использую некоторый код Java в проекте JRuby для подключения к MQ. Я новичок в Java и не знаю, как следующие выражения Java могут быть использованы в JRuby.
QueueConnection con = factory.createQueueConnection();
QueueSession session = con.createQueueSession(false, session.AUTO_ACKNOWLEDGE);
session.start();
Где QueueConnection и QueueSession являются классами Java, которые импортируются сверху
java_import javax.jms.QueueConnection
java_import javax.jms.QueueSession
Спасибо
1 ответ
Решение
В Java:
- Переменная должна объявлять их тип.
QueueConnection con = ...
означает переменнуюcon
имеет типQueueConnection
, Типы существуют и в Ruby, но они не являются явными, так что вы просто скажетеcon = ...
, - Заявления должны заканчиваться точкой с запятой. Они не требуются в Ruby.
Кроме того, код, который вы показываете, не совсем правильно, так как session
переменная используется в session.AUTO_ACKNOWLEDGE
прежде чем это объявлено. AUTO_ACKNOWLEDGE
является статическим полем QueueSession
класс, поэтому код должен читать QueueSession.AUTO_ACKNOWLEDGE
, В JRuby к статическим полям можно получить доступ, используя ::
синтаксис вместо .
,
Поэтому я бы предположил, что эквивалентный код JRuby вашего фрагмента примерно такой:
con = factory.createQueueConnection()
session = con.createQueueSession(false, QueueSession::AUTO_ACKNOWLEDGE)
session.start()