zoukankan      html  css  js  c++  java
  • 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的效果.

    首先我们要下载ActiveMQ,下载地址:

    http://www.apache.org/dyn/closer.cgi?path=/activemq/apache-activemq/5.8.0/apache-activemq-5.8.0-bin.zip


    解压后,在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:

    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:

    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();
    				} 
    	        } 
    	 
    	    }); 
    	    TimeUnit.MINUTES.sleep(1); 
    	  
    	    session.close();  
    	    connection.close();


    运行后,得到如下消息:

    log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    收到消息:User [id=1, username=张三1, password=123456, now=Fri Jun 28 12:04:32 CST 2013]
    收到消息:User [id=2, username=张三2, password=123456, now=Fri Jun 28 12:04:33 CST 2013]

    .......









  • 相关阅读:
    Building Java Projects with Gradle
    Vert.x简介
    Spring及Spring Boot 国内快速开发框架
    dip vs di vs ioc
    Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
    SSO的定义、原理、组件及应用
    ModSecurity is an open source, cross-platform web application firewall (WAF) module.
    TDD中测试替身学习总结
    Spring事务银行转账示例
    台式机(华硕主板)前面板音频接口(耳机和麦克风)均无声的解决办法
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3161385.html
Copyright © 2011-2022 走看看