Шаблон ответа на запрос 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 обычно вызывается после того, как потребитель создан, и любые прослушиватели сообщений присоединены к потребителю, так что потребитель готов получать сообщения.