大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0
          1、環境:
          Windows XP
          apache-activemq-5.2.0-bin.zip
           
          2、安裝
          解壓縮到apache-activemq-5.2.0-bin.zip到一個目錄,比如C:\apache-activemq-5.2.0
           
          3、配置
          配置就在C:\apache-activemq-5.2.0\conf目錄下三個文件
          activemq.xml
          credentials.properties
          log4j.properties
           
          4、啟動ActiveMQ
          運行C:\apache-activemq-5.2.0\bin\activemq.bat
          5、測試
          ActiveMQ默認使用的TCP連接端口是61616, 通過查看該端口的信息可以測試ActiveMQ是否成功啟動 netstat -an|find "61616"

          C:\Documents and Settings\Administrator>netstat -an|find "61616"
              TCP        0.0.0.0:61616                    0.0.0.0:0                            LISTENING
          6、監控
          ActiveMQ5.0版本默認啟動時,啟動了內置的jetty服務器,提供一個demo應用和用于監控ActiveMQ的admin應用。
          admin:http://127.0.0.1:8161/admin/
          demo:http://127.0.0.1:8161/demo/

          下面是ActiveMQ5.2的一個最簡單例子!
          環境還是apache-activemq-5.2.0-bin.zip,需要注意的是,開發時候,要將apache-activemq- 5.2.0-bin.zip解壓縮后里面的activemq-all-5.2.0.jar包加入到classpath下面,這個包包含了所有jms接口 api的實現。

          Java代碼 復制代碼
          1. import org.apache.activemq.ActiveMQConnection;   
          2. import org.apache.activemq.ActiveMQConnectionFactory;   
          3.   
          4. import javax.jms.*;   
          5.   
          6. /**  
          7. * 消息的生產者(發送者)  
          8. *  
          9. */  
          10. public class JmsSender {   
          11.         public static void main(String[] args) throws JMSException {   
          12.                 // ConnectionFactory :連接工廠,JMS 用它創建連接   
          13.                 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(   
          14.                                 ActiveMQConnection.DEFAULT_USER,   
          15.                                 ActiveMQConnection.DEFAULT_PASSWORD,   
          16.                                 "tcp://192.168.14.117:61616");   
          17.                 //JMS 客戶端到JMS Provider 的連接   
          18.                 Connection connection = connectionFactory.createConnection();   
          19.                 connection.start();   
          20.                 // Session: 一個發送或接收消息的線程   
          21.                 Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);   
          22.                 // Destination :消息的目的地;消息發送給誰.   
          23.                 // 獲取session注意參數值my-queue是Query的名字   
          24.                 Destination destination = session.createQueue("my-queue");   
          25.                 // MessageProducer:消息生產者   
          26.                 MessageProducer producer = session.createProducer(destination);   
          27.                 //設置不持久化   
          28.                 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);   
          29.                 //發送一條消息   
          30.                 sendMsg(session, producer);   
          31.                 session.commit();   
          32.                 connection.close();   
          33.         }   
          34.   
          35.         /**  
          36.          * 在指定的會話上,通過指定的消息生產者發出一條消息  
          37.          *  
          38.          * @param session    消息會話  
          39.          * @param producer 消息生產者  
          40.          */  
          41.         public static void sendMsg(Session session, MessageProducer producer) throws JMSException {   
          42.                 //創建一條文本消息   
          43.                 TextMessage message = session.createTextMessage("Hello ActiveMQ!");   
          44.                 //通過消息生產者發出消息   
          45.                 producer.send(message);   
          46.                 System.out.println("");   
          47.         }   
          48. }  
           
          Java代碼 復制代碼
          1. import org.apache.activemq.ActiveMQConnection;   
          2. import org.apache.activemq.ActiveMQConnectionFactory;   
          3.   
          4. import javax.jms.*;   
          5.   
          6. /**  
          7. * 消息的消費者(接受者)  
          8. *  
          9. */  
          10. public class JmsReceiver {   
          11.         public static void main(String[] args) throws JMSException {   
          12.                 // ConnectionFactory :連接工廠,JMS 用它創建連接   
          13.                 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(   
          14.                                 ActiveMQConnection.DEFAULT_USER,   
          15.                                 ActiveMQConnection.DEFAULT_PASSWORD,   
          16.                                 "tcp://192.168.14.117:61616");   
          17.                 //JMS 客戶端到JMS Provider 的連接   
          18.                 Connection connection = connectionFactory.createConnection();   
          19.                 connection.start();   
          20.                 // Session: 一個發送或接收消息的線程   
          21.                 Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);   
          22.                 // Destination :消息的目的地;消息發送給誰.   
          23.                 // 獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置   
          24.                 Destination destination = session.createQueue("my-queue");   
          25.                 // 消費者,消息接收者   
          26.                 MessageConsumer consumer = session.createConsumer(destination);   
          27.                 while (true) {   
          28.                         TextMessage message = (TextMessage) consumer.receive(1000);   
          29.                         if (null != message)   
          30.                                 System.out.println("收到消息:" + message.getText());   
          31.                         else  
          32.                                 break;   
          33.                 }   
          34.                 session.close();   
          35.                 connection.close();   
          36.         }   
          37. }  
           
          啟動ActiveMQ,然后開始執行:
          先運行發送者,連續運行了三次,最后一次控制臺輸出:


          Process finished with exit code 0
           
          后運行接受者,輸出結果:
          收到消息Hello ActiveMQ!
          收到消息Hello ActiveMQ!
          收到消息Hello ActiveMQ!

          Process finished with exit code 0
           
          注意:
          其中的端口61616是ActiveMQ默認的配置,在activemq.xml中,

          Xml代碼 復制代碼
          1. <!-- The transport connectors ActiveMQ will listen to -->  
          2.              <transportConnectors>  
          3.                      <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>  
          4.                      <transportConnector name="ssl" uri="ssl://localhost:61617"/>  
          5.                      <transportConnector name="stomp" uri="stomp://localhost:61613"/>  
          6.                      <transportConnector name="xmpp" uri="xmpp://localhost:61222"/>  
          7.              </transportConnectors>   
           
          ,建議不要改動,都用這個端口多好,就像ftp都用21端口,也沒錯。
           
           
          這是官方的HelloWorld例子,不過看著不順眼:
          http://activemq.apache.org/hello-world.html

          posted on 2009-09-16 13:00 大鳥 閱讀(1309) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 江陵县| 彰化县| 镇安县| 泾阳县| 临邑县| 咸丰县| 板桥市| 武穴市| 林芝县| 且末县| 宁海县| 留坝县| 溧阳市| 横峰县| 慈利县| 青川县| 广元市| 溆浦县| 万载县| 曲阜市| 焦作市| 松原市| 美姑县| 蓝山县| 公主岭市| 宣化县| 桑植县| 武乡县| 南乐县| 襄垣县| 邹城市| 沙雅县| 兴化市| 万宁市| 屯门区| 临猗县| 古田县| 灵川县| 黔东| 轮台县| 桃园市|