Помогите с JMS

Telegram dou#techПідписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Здраствуйте. Имею задание. На вход приходит очередь и сообщение, мне нужно отправить сообщение в очередь. Так вот я не могу определить где очередь начинается.
Я так понимаю, что это Destination queue? Зарание спасибо.

public class Producer {
 public static void main(String[] args) {
 try {
 // Получает контекст JNDI
 Context jndiContext = new InitialContext();
 // Выполняет поиск администрируемых объектов
 ConnectionFactory connectionFactory = (ConnectionFactory)
 jndiContext.lookup("jms/javaee7/ConnectionFactory" );
 Destination queue = (Destination) jndiContext.lookup("jms/javaee7/Queue");
 //Создает необходимые артефакты для соединения с очередью
 Connection connection = connectionFactory.createConnection();
 Session session = connection.createSession(false, Session.AUTO_
ACKNOWLEDGE);
 MessageProducer producer = session.createProducer(queue);
 // Отправляет текстовое сообщение в очередь
 TextMessage message = session.createTextMessage("Сообщение отправлено " + new
Date());
 producer.send(message);
 connection.close();
 } catch (NamingException | JMSException e) {
 e.printStackTrace();
 }
 }
}
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вопрос не понял, советую пройти видео-курс O’Reilly JMS 1.1 & 2.0 (на рутрекере есть), думаю все вопросы отпадут.
Также используй try-with-resources.

Я так понимаю на вход приходит вся очередь, тоесть

Session session
потому что нужно создать
TextMessage message = session.createTextMessage(str);

Получается так ?

метод(Destination queue, String message){
Session session = session.createProducer(queue);
TextMessage message = session.createTextMessage(str);
producer.send(message);
connection.close();
} catch (NamingException | JMSException e) {
e.printStackTrace();
}
}

У меня задание звучит так: "
1. Написать простой код, который будет отправлять данное в параметре сообщение на данную в параметре очередь JMS.
2. Написать простой код, который заберет сообщение с данной в параметре очереди JMS и высветлит на экране."

Я должен создать метод, где на вход приходит очередь JMS и сообщение. Метод должен отправить сообщение в очередь.
То я так понимаю что в метод будет приходить : метод(Destination queue, String str)


метод(Destination queue, String message){
try {
Context jndiContext = new InitialContext();
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory" );
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_
ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage(str);
producer.send(message);
connection.close();
} catch (NamingException | JMSException e) {
e.printStackTrace();
}
}
}

Ну, тебе надо сначала разобраться что же конкретно тебе на вход приезжает. Если там будет просто имя очереди, то объект (Destination queue) ты получаешь через JNDI и отправляешь в очередь сообщение. Если тебе на вход прям объект очереди передают, тогда тупо в него отправляешь — но по идее тебе имя должно приехать.

producer.send(message);
— сообщение ты уже отправил
jms/javaee7/Queue
 — JNDI-имя кьюшки, созданной, к примеру на Weblogic или Glassfish
Заходи в «админку» своего app-сервера, ищи настройки messaging’а, находи/создавай кьюшку с этим именем, после отправки сообщение должно там появиться.
Так вот я не могу определить где очередь начинается.

Не понял вопроса. Что значит «очередь начинается»?

Где здесь в этом коде создается очередь?

Ваша очередь создается в админке application server’а, а вот этим кодом вы ее получаете:
// Выполняет поиск администрируемых объектов
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory" );
Destination queue = (Destination) jndiContext.lookup("jms/javaee7/Queue“);

У вас же написано: “Выполняет поиск администрируемых объектов”

Підписатись на коментарі