簡體   English   中英

TIBCO JMS隊列消息接收器卡住了

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM