Отправить сообщение успешно доставлено, но когда я пытаюсь получить сообщения от агента, в агенте не отображаются сообщения
Я новичок в JMS+OPenMq + Glassfish, пожалуйста, откажитесь от успешной отправки сообщения и получения сообщений....
Я создал две разные программы сервлетов и развернул их на сервере galssfish.... Здесь я успешно отправляю сообщение, но потребитель не может использовать сообщения......
режиссер:
Properties p = new Properties();
p.put("java.naming.factory.initial","com.sun.enterprise.naming.SerialInitContextFactory");
p.put("java.naming.factory.url.pkgs","com.sun.enterprise.naming");
p.put("java.naming.provider.url", "iiop://localhost:3700");
InitialContext jndiContext = new InitialContext(p);
TopicConnectionFactory connectionFactory = (TopicConnectionFactory) jndiContext.lookup("jms/HQTapicConnectionFactory");
Topic topic = (Topic) jndiContext.lookup("jms/HqDestTopic");
System.out.println(topic.getTopicName());
TopicConnection connection = (TopicConnection) connectionFactory.createTopicConnection();
System.out.println(connection.toString());
TopicSession session = connection.createTopicSession(true, Session.AUTO_ACKNOWLEDGE); //createSession(false, Session.AUTO_ACKNOWLEDGE);
TopicPublisher publisher = session.createPublisher(topic);
ObjectMessage message = session.createObjectMessage();
ArrayList<Employee> employeeList= new ArrayList<Employee>();
Employee employee = null;
for (int i = 0; i < 5; i++) {
employee = new Employee();
employee.setEmpid((100+i));
employee.setName("devid"+i);
employeeList.add(employee);
}
System.out.println(employeeList.size());
message.setObject(employeeList);
publisher.send(message);
Потребитель:
public void onMessage (Сообщение сообщения) {
ObjectMessage objectMessage= (ObjectMessage) message;
try{
System.out.println("Received the following message: ");
Object object = objectMessage.getObject();
if(object instanceof ArrayList){
ArrayList arrayList = (ArrayList)object;
for (int i = 0; i < arrayList.size(); i++) {
Object object1 = arrayList.get(i);
if(object1 instanceof Employee){
Employee employee = (Employee)object1;
System.out.println(employee.getEmpid());
System.out.println(employee.getName());
System.out.println();
}
}
}
}
catch (JMSException e)
{
e.printStackTrace();
}
}
Я не могу получать сообщения,
Пожалуйста, помогите мне правильно настроить брокера на сервере Glassfish.
... ценю за ваш повтор
1 ответ
Если ваш потребитель находится в сервлете, он будет перехватывать только те сообщения, которые отправлены в один и тот же момент времени (что маловероятно) - вы используете темы, которые по умолчанию не буферизируются.
Или используйте очереди (вместо тем) или напишите отдельную программу, которая постоянно работает (и, таким образом, слушает / получает). Обычно слушатели темы не имеют большого смысла в сервлете.