一、 多種語言和協議編寫客戶端。語言: Java、C、C++、C#、Ruby、Perl、Python、PHP。應用協議:OpenWire、Stomp REST、WS Notification、XMPP、AMQPphp
二、徹底支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)java
三、對spring的支持,ActiveMQ能夠很容易內嵌到使用Spring的系統裏面去,並且也支持Spring2.0的特性python
四、經過了常見J2EE服務器(如 Geronimo、JBoss 四、GlassFish、WebLogic)的測試,其中經過JCA 1.5 resource adaptors的配置,可讓ActiveMQ能夠自動的部署到任何兼容J2EE 1.4 商業服務器上ios
五、支持多種傳送協議:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTAspring
六、支持經過JDBC和journal提供高速的消息持久化apache
七、從設計上保證了高性能的集羣,客戶端-服務器,點對點安全
八、支持Ajax服務器
九、支持與Axis的整合session
十、能夠很容易得調用內嵌JMS provider,進行測試異步
package activemqA; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; //生產者 public class Sender { public static void main(String args[]){ Sender sender = new Sender(); sender.sendMessage("hello,activemqB"); } public void sendMessage(String msg){ ConnectionFactory connectionFactory = null; Connection connection = null; Session session = null; try { //1.建立鏈接工廠 connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); //2.獲得一個鏈接 connection = connectionFactory.createConnection(); //3.建立一個Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //4.建立目的地 Destination destination = session.createQueue("myQueue"); //5.建立發送者 MessageProducer messageProducer = session.createProducer(destination); //6.建立文本消息 TextMessage textMessage = session.createTextMessage(msg); //7.發送消息 messageProducer.send(textMessage); } catch (JMSException e) { e.printStackTrace(); }finally{ //8.關閉connection和sessiosn try { if(connection !=null){ connection.close(); } if (session !=null) { session.close(); } } catch (JMSException e) { e.printStackTrace(); } } } }
消費者
package activemqB; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; //消費者 public class Receiver { public static void main(String args[]){ Receiver receiver = new Receiver(); receiver.receiverMessage(); } public void receiverMessage(){ ConnectionFactory connectionFactory = null; Connection connection = null; Session session =null; try { //1.建立鏈接工廠 connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); //2.獲得一個鏈接 connection = connectionFactory.createConnection(); //3.建立一個Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //4.建立目的地 Destination destination = session.createQueue("myQueue"); //5.建立接受者 MessageConsumer messageConsumer = session.createConsumer(destination); //6.打開鏈接 connection.start(); //7.接收消息 TextMessage textMessage = (TextMessage) messageConsumer.receive(1000); //8.輸出驗證 System.out.println("接收到的消息爲:"+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); }finally { try { if (connection !=null) { connection.close(); } if (session !=null) { session.close(); } } catch (JMSException e) { e.printStackTrace(); } } } }