簡體   English   中英

JMS消息無法從隊列中檢索

[英]JMS message failed to retrieve from a queue

我正在嘗試使用ActiveMQ嵌入式代理編寫第一個最簡單的JMS應用程序。 該應用程序是sping桌面應用程序,這是其主要方法:

public static void main( String[] args ) throws JMSException
{
    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/appContext.xml");
    ConnectionFactory cf = (ConnectionFactory) context.getBean("jmsFactory");
    Connection connetcion = null;
    try{
        connetcion = cf.createConnection();
        final Session session = connetcion.createSession(false, Session.AUTO_ACKNOWLEDGE);
        final Destination testQueue = (Destination) context.getBean("testQueue");
        String text = "Test message";
        MessageProducer mp = session.createProducer(testQueue);
        Message msg = session.createTextMessage(text);
        mp.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        mp.send(msg);
        MessageConsumer mc = cf.createConnection().createSession(false, Session.AUTO_ACKNOWLEDGE).createConsumer(testQueue);
        TextMessage recievedMsg = null;
        recievedMsg = (TextMessage) mc.receive();  //1 <---------- Here is the problem
        System.out.println(recievedMsg.getText());
    } catch(JMSException jmse){
        throw new AssertionError("JMS Exception");
    }
    finally{
        connetcion.close();
    }
}

彈簧配置包含以下bean:

<amq:broker useJmx="false" persistent="false">
    <amq:transportConnectors>
        <amq:transportConnector uri="tcp://localhost:61616" />
    </amq:transportConnectors>
</amq:broker>

<amq:queue id="testQueue" physicalName="com.badmitrii.test" />

<amq:connectionFactory id="jmsFactory" brokerURL="tcp://localhost:61616" />

我嘗試將消息發送到隊列,然后稍后在同一線程中使用該消息。 但是,當我在//1處調用receive()方法時,主線程ios被阻塞,就像隊列中沒有任何消息一樣。

我做錯了什么?

看起來您沒有啟動()連接。

connetcion = cf.createConnection();
connetcion.start();

應該可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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