wayne

          2008年9月14日 #

          JMS (2)

          異步隊列消息的接收有一點區別,但發送的代碼不用改變:

           1@Stateless
           2public class JMSReceiveBean implements JMSReceiveRemote {
           3
           4    @Resource(name = "jms/Queue")
           5    private Queue queue;
           6    @Resource(name = "jms/ConnectionFactory")
           7    private ConnectionFactory queueFactory;
           8
           9    private void receiveJMSMessageFromQueue() throws Exception {
          10        Connection connection = null;
          11        Session session = null;
          12        connection = queueFactory.createConnection();
          13        session = connection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
          14        MessageConsumer consumer = session.createConsumer(queue);
          15        consumer.setMessageListener(new MessageListener() {
          16
          17            public void onMessage(Message message) {
          18                TextMessage msg = (TextMessage) message;
          19                try {
          20                    String txt = msg.getText();
          21                    Logger.getLogger(JMSReceiveBean.class.getName()).log(Level.SEVERE, txt);
          22                }
           catch (Exception ex) {
          23                    ex.printStackTrace();
          24                }

          25            }

          26        }
          );
          27        
          28        connection.start();
          29    }

          30
          31    public void receiveMessage() {
          32        try {
          33            receiveJMSMessageFromQueue();
          34        }
           catch (Exception ex) {
          35            Logger.getLogger(JMSReceiveBean.class.getName()).log(Level.SEVERE, null, ex);
          36        }

          37    }

          38}

          在15行消息使用者上設置了一個消息監聽器,而沒有使用同步的receive方法。由于這是異步接收消息,程序并沒有處于阻塞狀態,為了避免在接收到消息之前連接終止,所以在28行之后并沒有關閉Connection,實際上這一步是不可缺少的。

          posted @ 2008-09-14 16:40 waynemao 閱讀(115) | 評論 (0)編輯 收藏

          JMS (1)

               摘要: 開發任何JMS應用之前,首先要做的事是在應用服務器中配置JMS被管對象:連接工廠和目的地。它們最好不要以編程的方式實現,因為其背后的技術有多種不同的API實現,可能無法移植。以下是glassfish中的配置: 在配置--java消息服務里創建兩個物理目的地  名稱:myQueue  類型:javax.jms.Queue  名稱:myTopic  類...  閱讀全文

          posted @ 2008-09-14 05:31 waynemao 閱讀(314) | 評論 (0)編輯 收藏

          My Links

          Blog Stats

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          default

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巢湖市| 北票市| 穆棱市| 吴堡县| 临沭县| 绩溪县| 衡水市| 岚皋县| 济阳县| 石嘴山市| 泰宁县| 花垣县| 内江市| 绥江县| 安岳县| 修文县| 佛冈县| 隆昌县| 宜宾县| 大理市| 湄潭县| 嘉禾县| 谷城县| 文登市| 高碑店市| 延安市| 常州市| 资阳市| 泊头市| 彝良县| 阿拉善盟| 汶川县| 中西区| 沈阳市| 保康县| 周至县| 景宁| 平顺县| 嫩江县| 常州市| 肥西县|