ActiveMQ初识

第一次学习使用ActiveMQ,安装环境windows10

安装步骤:

1:下载apache-activemq-5.15.4-bin.zip

2:解压即可

安装完成后的目录结构:

启动在bin目录下,对应的有两个文件夹,32和64的根据自己电脑操作系统选择相应目录

楼主的是win64,进入目录双击activemq.bat即可启动

验证是否启动成功访问:http://localhost:8161/ 进入后台管理系统

登陆密码默认是:admin/admin

ActiveMQ启动默认开启了两个端口:8161和61616

8161端口:是后台管理端口  ,可在conf/jetty.xml中修改

61616端口:是java开发连接的端口,可在/conf/activemq.xml

代码测试:

maven依赖:

<dependency>
     <groupId>org.apache.activemq</groupId>
     <artifactId>activemq-core</artifactId>
     <version>5.5.0</version>
</dependency>
<dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-pool</artifactId>
      <version>5.7.0</version>
</dependency>

 

生产者:

package com.test.mq.queue;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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 produceMq {
	private static final String SUBJECT = "test-activemq-queue";
	//连接账号
    private static String userName = "admin";
    //连接密码
    private static String password = "admin";
    //连接地址
    private static String brokerURL = "tcp://localhost:61616";
	public static void main(String[] args) throws JMSException {
		//初始化连接工厂  
		ConnectionFactory connectionFactory = new 
                     ActiveMQConnectionFactory(userName,password,brokerURL);
		//获得连接
		Connection conn = connectionFactory.createConnection();
		//启动连接
		conn.start();
		//创建Session,此方法第一个参数表示会话是否在事务中执行,第二个参数设定会话的应答模式
		Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
		//创建队列
		Destination dest = session.createQueue(SUBJECT);
		//createTopic方法用来创建Topic
		//session.createTopic("TOPIC");
		//通过session可以创建消息的生产者
		MessageProducer producer = session.createProducer(dest);
//		producer.setDeliveryMode(DeliveryMode.PERSISTENT);持久化
		for (int i=0;i<100;i++) {
			//初始化一个mq消息
			TextMessage message = session.createTextMessage("hello active mq 中文" + i);
			//发送消息
			producer.send(message);//
		}
		session.commit();
		session.close();
		//关闭mq连接
		conn.close();
	}
}

消费者:

package com.test.mq.queue;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ConsumerMq {
	private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerMq.class);
    private static final String SUBJECT = "test-activemq-queue";
    //连接账号
    private static String userName = "admin";
    //连接密码
    private static String password = "admin";
    //连接地址
    private static String brokerURL = "tcp://localhost:61616";
    public static void main(String[] args) throws JMSException {
    	//初始化ConnectionFactory
    	ConnectionFactory connectionFactory = new                 
                          ActiveMQConnectionFactory(userName,password,brokerURL);

        //创建mq连接
        Connection conn = connectionFactory.createConnection();
//        conn.setClientID("");
        //启动连接
        conn.start();

        //创建会话
        Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);

        //通过会话创建目标 参数名称要和生产者一致
        Destination dest = session.createQueue(SUBJECT);
//      session.createDurableSubscriber(topic, "随便写");持久化消息接收
        //创建mq消息的消费者
        MessageConsumer consumer = session.createConsumer(dest);
        int i=0;
        while(i<100){
        	TextMessage message = (TextMessage) consumer.receive();
//        	session.commit();
//        	message.acknowledge();
        	onMessage(message);
        	i++;
        }
        
        //初始化MessageListener
        ConsumerMq me = new ConsumerMq();

        //给消费者设定监听对象
//        consumer.setMessageListener(me);
    }

    public static void onMessage(Message message) {
        TextMessage txtMessage = (TextMessage)message;
        try {
        	System.out.println("get message " + txtMessage.getText());
            LOGGER.info ("get message " + txtMessage.getText());
        } catch (JMSException e) {
            LOGGER.error("error {}", e);
        }
    }
}

一只行走的小笨猿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值