当前位置:web 服务器 > Apache >>

Apache ActiveMQ消息中间件的基本使用

Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件;由于ActiveMQ是一个纯Java程式,因此只需要操作系统支援Java虚拟机,ActiveMQ便可执行。


支持Java消息服务 (JMS) 1.1 版本
Spring Framework
集群 (Clustering)
支持的编程语言包括:C、C++、C#、Delphi、Erlang、Adobe Flash、Haskell、Java、JavaScript、Perl、PHP、Pike、Python和Ruby [1]
协议支持包括:OpenWire、REST、STOMP、WS-Notification、XMPP以及AMQP

 


好,我们先写个demo来试试 ActiveMQ的效果.

 

 


解压后,在x:/apache-activemq-5.8.0-bin/bin 目录下执行 activemq.bat即可启动 ActiveMQ,

由于ActiveMQ内置了Jetty web服务器,当ActiveMQ启动成功后,可以通过:http://localhost:8161/admin/访问ActiveMQ的控制台,默认的用户名和密码是:admin。

至此ActiveMQ 服务已经启动了,接下来我们先将x:/apache-activemq-5.8.0-bin/activemq-all-5.8.0.jar拷贝到你的classpath目录下,利用Java写个demo来尝试一下这个消息中间件。

 


JmsSender:


[java] 
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");   
           
        Connection connection = connectionFactory.createConnection();   
        connection.start();   
         
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);   
        Destination destination = session.createQueue("Test.foo");   
 
        MessageProducer producer = session.createProducer(destination);   
        producer.setDeliveryMode(DeliveryMode.PERSISTENT); 
        for(int i=0; i<100; i++) {   
            int id = i+1; 
            ObjectMessage message = session.createObjectMessage(); 
            message.setObject(new User(id, "张三"+id, "123456")); 
            producer.send(message);   
        }   
        session.commit(); 
        session.close();   
        connection.close();   

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); 
   
     Connection connection = connectionFactory.createConnection(); 
     connection.start(); 
    
     Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 
     Destination destination = session.createQueue("Test.foo"); 

     MessageProducer producer = session.createProducer(destination); 
     producer.setDeliveryMode(DeliveryMode.PERSISTENT);
     for(int i=0; i<100; i++) { 
         int id = i+1;
         ObjectMessage message = session.createObjectMessage();
         message.setObject(new User(id, "张三"+id, "123456"));
         producer.send(message); 
     } 
     session.commit();
     session.close(); 
     connection.close(); 
JmsReceiver:


[java] 
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");   
           
        Connection connection = connectionFactory.createConnection();   
        connection.start(); 
       
        final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);   
        Destination destination = session.createQueue("Test.foo"); 
         
        MessageConsumer consumer = session.createConsumer(destination); 
        //listener 方式   
        consumer.setMessageListener(new MessageListener() {  
      
            public void onMessage(Message msg) {  
                ObjectMessage message = (ObjectMessage) msg;  
                //TODO something....   
                try { 
                    User user = (User) message.getObject(); 
                    System.out.println("收到消息:"+user); 
                } catch (JMSException e1) { 
                    // TODO Auto-generated catch block  
                    e1.printStackTrace(); 
                }  
                try { 
                    session.commit(); 
                } catch (JMSException e) { 
                    // TODO Auto-generated catch block  
                    e.printStackTrace(); 
                }  
            }  
      
        });  
  

补充:软件开发 , Java ,
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,