Отправить сообщение было успешно доставлено, но когда я пытаюсь получить сообщения от агента, в агенте не отображаются сообщения.

Я новичок в 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.

,...благодарю за повтор


person Ganesh S    schedule 11.07.2014    source источник


Ответы (1)


Если ваш потребитель находится в сервлете, он будет перехватывать только сообщения, отправленные в один и тот же момент времени (весьма маловероятно) - вы используете темы, которые по умолчанию не буферизуются.

Либо используйте очереди (вместо тем), либо напишите автономную программу, которая постоянно работает (и, таким образом, слушает/принимает). Обычно слушатели темы не имеют особого смысла в сервлете.

person Beryllium    schedule 11.07.2014
comment
Спасибо за ваш повтор ..... Я успешно выполнил автономное приложение для 2 моделей (P-TO-P и Pub/Sub). Но я хочу реализовать обе модели (P-to-P и pub/sub) в своих приложениях (оба приложения работают с использованием сервлета (Spring MVC))... Для этой цели я реализовал pub/sub в примере сервлета сервлета. ... пожалуйста, вы можете помочь в этом случае ... И можете ли вы предоставить документацию (URL) для IMQ BROKER CONFIGURATION ...... - person Ganesh S; 14.07.2014