Преобразование кода 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()
Другие вопросы по тегам