[英]TIBCO JMS Queue message reciever gets stuck
嗨,我創建了以下類來從jibco jms隊列中讀取消息。 在另一個類中,我創建了這個類的一個實例,並嘗試將getMessage()放入一個攪拌器中。 我在隊列中放了一條消息,我的應用程序因為調用getMessage()方法而卡住......有什么想法嗎? 或者我可以在課堂上添加一些改進?
public class EMSReceiver {
private QueueConnection connection;
private QueueReceiver queueReceiver;
private Queue queue;
private TextMessage message;
public EMSReceiver(String initialContextFactory, String userName, String password, String serverUrl, String confact, String q){
try {
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
env.put(Context.SECURITY_PRINCIPAL, userName);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL, serverUrl);
InitialContext jndi = new InitialContext(env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory) jndi.lookup(confact);
QueueConnection connection = connectionFactory.createQueueConnection(userName, password);
QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
this.queue = (Queue) jndi.lookup(q);
this.queueReceiver = session.createReceiver(queue);
connection.start();
}
catch (JMSException e) {
e.printStackTrace();
System.exit(0);
} catch (NamingException e) {
e.printStackTrace();
}
}
public String getMessage() throws JMSException{
try {
this.message = (TextMessage) queueReceiver.receive();
} catch (JMSException e) {
System.out.println("Could not retrieve the message.");
e.printStackTrace();
}
return message.getText();
}
queueReceiver.receive()
方法將一直等到它在隊列中收到消息。 如果您不想等待,請使用receiveNoWait()
或receive(long timeout)
。 可以在此處找到相關文檔: https : //javaee-spec.java.net/nonav/javadocs/javax/jms/QueueReceiver.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.