Помогите с JMS
Здраствуйте. Имею задание. На вход приходит очередь и сообщение, мне нужно отправить сообщение в очередь. Так вот я не могу определить где очередь начинается.
Я так понимаю, что это 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();
}
}
}
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВопрос не понял, советую пройти видео-курс O’Reilly JMS 1.1 & 2.0 (на рутрекере есть), думаю все вопросы отпадут.
Также используй try-with-resources.
Я так понимаю на вход приходит вся очередь, тоесть
потому что нужно создатьПолучается так ?
У меня задание звучит так: "
1. Написать простой код, который будет отправлять данное в параметре сообщение на данную в параметре очередь JMS.
2. Написать простой код, который заберет сообщение с данной в параметре очереди JMS и высветлит на экране."
Я должен создать метод, где на вход приходит очередь JMS и сообщение. Метод должен отправить сообщение в очередь.
То я так понимаю что в метод будет приходить : метод(Destination queue, String str)
Ну, тебе надо сначала разобраться что же конкретно тебе на вход приезжает. Если там будет просто имя очереди, то объект (Destination queue) ты получаешь через JNDI и отправляешь в очередь сообщение. Если тебе на вход прям объект очереди передают, тогда тупо в него отправляешь — но по идее тебе имя должно приехать.
— JNDI-имя кьюшки, созданной, к примеру на Weblogic или Glassfish
Заходи в «админку» своего app-сервера, ищи настройки messaging’а, находи/создавай кьюшку с этим именем, после отправки сообщение должно там появиться.
Не понял вопроса. Что значит «очередь начинается»?
Где здесь в этом коде создается очередь?
Ваша очередь создается в админке application server’а, а вот этим кодом вы ее получаете:
// Выполняет поиск администрируемых объектов
ConnectionFactory connectionFactory = (ConnectionFactory)
jndiContext.lookup("jms/javaee7/ConnectionFactory" );
Destination queue = (Destination) jndiContext.lookup("jms/javaee7/Queue“);
У вас же написано: “Выполняет поиск администрируемых объектов”
Она в коде и не создается.