java activeMQ消息的发送与接收

java activeMQ消息的发送与接收
          activemq是我们经常用到的消息队列之一,比如说速度快,对spring的很好的支持,支持多种协议等等,今天我们就来看一下activeMQ消息的发送与接收的源代码。
      我这里使用了两个配置文件,其实在一个配置文件里面就可以完成发送与接收功能,但是为了方便观察日志,我就使用了两个配置文件。在使用代码之前需要搭建好activeMQ消息队列环境。
       一、代码目录结构
       所建立的工程是maven工程,代码结构如图所示:
java activeMQ消息的发送与接收_第1张图片

          一、maven配置pom.xml

	4.0.0
	Test
	Test
	0.0.1-SNAPSHOT


	
		
			com.alibaba
			fastjson
			1.2.16
		
		
		org.json
		org.json
		chargebee-1.0
	
		
			junit
			junit
			4.12
			test
		
		
			com.cloudhopper.proxool
			proxool
			0.9.1
			
				
					log4j
					log4j
				
			
		
		
			org.apache.activemq
			activemq-all
			5.11.0
		
		
			org.springframework
			spring-jms
			4.1.4.RELEASE

		
		
			org.springframework
			spring-jdbc
			4.1.4.RELEASE
		
		
			org.springframework
			spring-core
			4.1.4.RELEASE
		
		
			org.springframework
			spring-beans
			4.1.4.RELEASE
		
		
			org.springframework
			spring-context
			4.1.4.RELEASE
		
		
			org.springframework
			spring-context-support
			4.1.4.RELEASE
		
		
			org.apache.cxf
			cxf-rt-frontend-jaxws
			2.7.3
		
		
			org.apache.cxf
			cxf-rt-transports-http
			2.7.3
		
		
			org.apache.cxf
			cxf-rt-transports-http-jetty
			2.4.5
		
		
			org.slf4j
			slf4j-api
			1.7.5
		


		
			com.h2database
			h2
			1.3.152
		
		
			org.apache.httpcomponents
			httpclient
			4.1.1
		
		
			dom4j
			dom4j
			1.6.1
		
		
			commons-dbutils
			commons-dbutils
			1.3
		
		
			org.freemarker
			freemarker
			2.3.16
		
		
			jaxen
			jaxen
			1.1.1
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			xqj
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			xpath
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			xom
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			sql
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			s9api
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			jdom
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			dom4j
		
		
			net.sourceforge.saxon
			saxon
			9.1.0.8
			dom
		
		
			xom
			xom
			1.1
		
		
			stax
			stax
			1.2.0
		
		
			org.drools
			drools-core
			5.3.0.Final
		
		
			org.drools
			drools-compiler
			5.3.0.Final
		
		
			commons-io
			commons-io
			2.2
		
		
			javax.xml.bind
			jsr173_api
			1.0
		
		
			org.springframework
			spring-test
			4.1.4.RELEASE
		

		
			corba
			corba-connect
			0.0.2
		

		
			com.ustcinfo.inm.data
			inm-data-spi
			0.0.1-SNAPSHOT
		
		
			com.taobao.metamorphosis
			metamorphosis-client
			1.4.4
		
		
			com.googlecode.aviator
			aviator
			2.2.1
		
		
			com.jcraft
			jsch
			0.1.50
		
	
	
		src
		
			
				maven-compiler-plugin
				3.3
				
					1.8
					1.8
				
			
		
	
         二、LoadUtil.java加载类
package www.activemq.load;

import javax.jms.Destination;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

/**
 * 加载配置文件工具类
 * @author Administrator
 *
 */
public class LoadUtil {
	
	ApplicationContext applicationContext;
	JmsTemplate template;//jsm对象,可以发送和消费消息
	Destination destination;//队列名称
	
	/**
	 * 加载方法
	 * @param path 文件路径名称
	 */
	public void load(String path){
		  applicationContext = new ClassPathXmlApplicationContext(path);
		  template = (JmsTemplate) applicationContext.getBean("jmsTemplate");
		  destination = (Destination) applicationContext.getBean("queueDestination");
		  this.setApplicationContext(applicationContext);
		  this.setDestination(destination);
		  this.setDestination(destination);
	}
	
	public ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	public void setApplicationContext(ApplicationContext applicationContext) {
		this.applicationContext = applicationContext;
	}

	public JmsTemplate getTemplate() {
		return template;
	}

	public void setTemplate(JmsTemplate template) {
		this.template = template;
	}

	public Destination getDestination() {
		return destination;
	}

	public void setDestination(Destination destination) {
		this.destination = destination;
	}
	
}

        三、QueueProducer.java发送消息到activeMQ类
package www.avtivemq.sendmessage;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

import www.activemq.load.LoadUtil;

public class QueueProducer{
	/**
	 * 发送消息到activemq的实现方法
	 * @param msg //发送消息的内容,为字符串类型
	 */
	public void sendMessage(String msg) {
		LoadUtil lu = new LoadUtil();
		lu.load("activemq-config.xml");
		JmsTemplate template = lu.getTemplate();
		String destination = template.getDefaultDestination().toString();
		System.out.println("向队列" + destination + "发送了消息:" + msg);
		template.send(new MessageCreator() {
			public Message createMessage(Session session) throws JMSException {
				return session.createTextMessage(msg);
			}
		});
	}
	
	/**
	 * 主方法
	 * @param args
	 */
	public static void main(String[] args) {
		QueueProducer producer = new QueueProducer();
		producer.sendMessage("zcinfo_test");
	}

}
       四、activemq-config.xml配置文件


	
	
	
	
			
	
	
	
		
			UEAP_TO_GZZC_QUEUE_TEST
		
	
	  
	
		
		
		
	

         五、ActivemqConsumer.java消费类
package www.activemq.receivemessage;

import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import www.activemq.load.LoadUtil;

public class ActivemqConsumer implements MessageListener{
	
	@Override
	public void onMessage(Message message) {
		TextMessage tm = (TextMessage)message;
		System.out.println("监听到MQ中有数据......");
		try {
			System.out.println("获取MQ中数据信息>>>>>>>>>>" +  tm.getText());
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 加载配置文件之后监听器会自动调用onMessage方法,并且保持服务一直开启很实用
	 * @param args
	 */
	public static void main(String[] args) {
		new LoadUtil().load("activemq-context.xml");
	}
}
          六、activemq-context.xml配置文件


 
    
 
    
    
        
        
    
    
    
    
        
        
    
    
    
    
        
        
    
    
    
    
        
            UEAP_TO_GZZC_QUEUE_TEST
        
    
    
    
    
    
    
        
        
        
		
    
         七、测试结果
        (1)发送消息
java activeMQ消息的发送与接收_第2张图片
            (2)activemq显示收到消息
java activeMQ消息的发送与接收_第3张图片
        (3)接收消息,服务一直开启接收发送者消息
java activeMQ消息的发送与接收_第4张图片
  

你可能感兴趣的:(ActiveMQ)