首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 3.0 訊息驅動 Bean 開發指南:JMS Queue 整合實作

     編輯:Java 相關知識

MDB 核心規範

  • 實作 javax.jms.MessageListener 介面 (onMessage)
  • 類別標註 @MessageDriven
  • JBoss 專用 @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(); }
    }
}

JMS Queue 服務部署

建立 queue-example-service.xml 放入 server/all/deploy:



  
    queue/kuaffejb3/sample
    
      jboss.mq:service=DestinationManager
    
  

Client 發送測試訊息


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);

關鍵注意事項

  • MDB 無業務介面,Client 不直接查找 MDB,而是發送訊息至 Queue
  • durable=true 確保訊息持久化,MDB 重啟不遺失
  • 交易屬性預設為 Required,onMessage 異常會導致訊息重送
  • 大量訊息處理可配置 maxPoolSize、maxMessages 等啟動參數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved