简单的activeMqService

在开发中经常在接口对接时需要搭建一个mq的服务器(如Android和web网页对接时),下面就搭建一个服务方便使用。

package com.activemq;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageService {
	private static MessageService instance;
	private static ConnectionFactory connectionFactory;
	private static Connection connection;
	private static Session session;
	private static MessageProducer producer;
	public String getUrl(){
		Properties properties = new Properties();
	    // 使用ClassLoader加载properties配置文件生成对应的输入流
	    InputStream in = MessageService.class.getClassLoader().getResourceAsStream("MQconfig.properties");
	    // 使用properties对象加载输入流
	    try {
			properties.load(in);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    //获取key对应的value值
	    return properties.getProperty("url");
	}
	//单列模式保证只有一个实例
	public static MessageService getInstance(){
		if(instance == null){
			instance = new MessageService();
			return instance;
		}else{
			return instance;
		}
	}
	/**
	 * 初始化
	 */
	private void init(){
		try {
			connectionFactory = new ActiveMQConnectionFactory("admin","admin",getUrl());//admin为mq的登录密码和账号,创建MQ的连接工厂。			
			connection = connectionFactory.createConnection();//通过连接工厂创建连接对象
			connection.start();//开启连接
			session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			Topic topic = session.createTopic("Radio");//创建一个发布订阅消息
			producer = session.createProducer(topic);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	private MessageService(){
		init();
	}
	/**
	 * 给所有注册用户发送文本信息
	 * @param messagevalue
	 * @return
	 */
	public boolean sendMessageToAll(String messagevalue){
		try{
			TextMessage textMessage = session.createTextMessage(messagevalue);
			producer.send(textMessage);
			session.commit();
			return true;
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return false;
		}
		
	}
	/**
	 * 给指定注册用户发送文本信息
	 * @param cilentid指定用户标识如id
	 * @param messag 消息内容
	 * @return
	 */
	public boolean sendMessageToSengle(String cilentid,String message){		
		Session session2 = null;
		try{
			session2 = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
			Topic queue = session2.createTopic(cilentid);
			MessageProducer producer2 = session2.createProducer(queue);
			TextMessage textMessage = session2.createTextMessage(message);
			producer2.send(textMessage);
			session2.commit();
			return true;
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return false;
		}finally {
			if(session2 != null){
				try {
					session2.close();
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

在项目src下面添加MQconfig.properties里面文件添加tcp的url

url=tcp://XXX.XXX.X.XXX:61616
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值