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