Шаблон ответа на запрос JMS, нет вывода

TestRequestresponse:

public static void main(String args[]) throws JMSException {
    TibjmsConnectionFactory connectionFactory = new TibjmsConnectionFactory(
            "tcp://localhost:7222");
    Connection con = connectionFactory.createConnection("admin", "");
    con.start();
    Session s = con.createSession();
    System.out.println("Successfully created JMS Connection and Session!");
    Queue q1 = s.createQueue("train.ems.queue.test");
    System.out.println(q1);
    System.out.println("Queue created!");
    TemporaryQueue tq = s.createTemporaryQueue();
    MessageProducer mp = s.createProducer(q1);
    MessageConsumer mc = s.createConsumer(tq);
    TextMessage tm = s.createTextMessage("Hi this is ABHISHEK!");
    tm.setStringProperty("Country", "IN");
    tm.setJMSCorrelationID("SENDER");
    tm.setJMSReplyTo(tq);
    mp.setTimeToLive(30000);
    mp.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    mp.setPriority(Message.DEFAULT_PRIORITY);
    mp.send(tm);
    Message recv = mc.receive(60000);
    if (recv != null) {
        System.out.println(recv.getBody(String.class));
    }
    mp.close();
    s.close();
    con.close();

}

TestAsyncReceiveMessage:

public class TestAsyncReceiveMessage implements MessageListener {
Session s;
Queue q1;

MessageProducer mp;

public static void main(String ars[]) throws JMSException {
    TestAsyncReceiveMessage obj = new TestAsyncReceiveMessage();
    obj.createSession();
    obj.createQueue();
    obj.msgConsumer();

}

private void msgConsumer() throws JMSException {
    // TODO Auto-generated method stub
    MessageConsumer mc = s.createConsumer(q1, "Country='IN'");
    mc.setMessageListener(new TestAsyncReceiveMessage());
}

private void createQueue() throws JMSException {
    // TODO Auto-generated method stub
    q1 = s.createQueue("train.ems.queue.test");
    // t1=s.createTopic("train.ems.topic.test");
}

private void createSession() throws JMSException {
    // TODO Auto-generated method stub
    TibjmsConnectionFactory connectionFactory = new TibjmsConnectionFactory(
            "tcp://localhost:7222");
    Connection con = connectionFactory.createConnection("admin", "");
    s = con.createSession();
    System.out.println("Successfully created JMS Connection and Session!");

}

public void onMessage(Message arg0) {

    try {
        System.out.println(arg0.getBody(String.class));
        TextMessage tm = s.createTextMessage("ACk");
        Queue t = (Queue) arg0.getJMSReplyTo();
        mp = s.createProducer(t);
        mp.send(tm);
    } catch (JMSException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Ну, во-первых, он показал мне NullPointerException при создании TextMessage в onMessage, я что-то изменил, и больше нет исключений, но нет и исходных данных. Помогите!:)

1 ответ

Вы не звонили Connection.Start() метод после создания в TestAsyncReceiveMessage код. Приложение должно вызвать Connection.Start(), чтобы сообщить провайдеру обмена сообщениями, чтобы начать доставку сообщений. В противном случае сообщения не будут доставлены потребителю.

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

Другие вопросы по тегам