javax.jms.MessageListener 介面 (onMessage)@MessageDriven@ConnectionConfig 指定 Queue JNDI 名稱
@MessageDriven
@ConnectionConfig(
destinationType = javax.jms.Queue.class,
destinationJndiName = "queue/kuaffejb3/sample",
durable = true,
subscriptionId = "kuaffMessage"
)
public class Messager implements MessageListener {
public void onMessage(Message msg) {
try {
TextMessage tm = (TextMessage) msg;
System.out.println("收到訊息: " + tm.getText());
} catch (JMSException e) { e.printStackTrace(); }
}
}
建立 queue-example-service.xml 放入 server/all/deploy:
queue/kuaffejb3/sample
jboss.mq:service=DestinationManager
InitialContext ctx = new InitialContext();
Queue queue = (Queue) ctx.lookup("queue/kuaffejb3/sample");
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
QueueConnection conn = factory.createQueueConnection();
QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
TextMessage msg = session.createTextMessage("測試訊息內容");
session.createSender(queue).send(msg);
durable=true 確保訊息持久化,MDB 重啟不遺失Required,onMessage 異常會導致訊息重送maxPoolSize、maxMessages 等啟動參數