ActiveMQ专题-- 入门安装和简单使用

安装环境

Centos7,JDK8,activemq-5.15.8

从官网下载ActiveMq

acitevemq-5.15.8版本地址

image.png

安装步骤

1.安装包上传到centos 服务器上,并解压缩。

image.png

tar -zxvf apache-activemq-5.15.8-bin.tar.gz 
  1. 修改目录的名称
mv /var/apache-activemq-5.15.8 /var/activemq

  1. 命令启动服务和停止服务

image.png

./bin/activemq start 启动命令
./bin/activemq stop 停止服务

以服务的方式运行activemq

  1. 创建一个systemd服务文件:
vi /usr/lib/systemd/system/activemq.service
  1. 文件内容如下:
[Unit]
Description=ActiveMQ service
After=network.target

[Service]
Type=forking
ExecStart=/var/activemq/bin/activemq start
ExecStop=/var/activemq/bin/activemq stop
User=root
Group=root
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=activemq

[Install]
WantedBy=multi-user.target

不能有特殊字符

  1. 找到java命令所在的目录:
whereis java

image.png

  1. 设置activemq配置文件/var/activemq/bin/env中的JAVA_HOME

image.png

  1. 通过systemctl 来启动服务和停止服务
启动服务:systemctl start activemq
查看服务状态:systemctl status activemq
停止服务:systemctl stop
创建软件链接: ln -s /usr/lib/systemd/system/activemq.service /etc/systemd/system/multi-user.target.wants/activemq.service 
开机自启: systemctl enable activemq
检测是否开启成功(enable): systemctl list-unit-files |grep activemq 

启动服务是报错:

image.png

解决方式:activemq.service有特殊字符需要修改或者重新加载env配置文件:

source /var/activemq/bin/env

重新启动并查看服务的状态:

image.png

开机自启动设置和查看

image.png

  1. 端口,防火墙配置;Web管理端口默认为8161(admin/admin),通讯端口默认为61616。
  • 修改防火墙:
firewall-cmd --zone=public --add-port=8161/tcp --permanent
firewall-cmd --zone=public --add-port=61616/tcp --permanent
systemctl restart firewalld.service
  • 关闭防火墙
systemctl stop firewalld.service

登录activemq的web页面管理:

image.png

  1. web管理页面配置信息:

web管理登录账号密码文件:jetty-realm.properties(在/var/activemq/conf目录下)

image.png

配置文件:jetty.xml

web管理页面的端口和是否需要账号密码登录的配置文件:jetty.xml(在/var/activemq/conf目录下)

image.png

image.png

使用java操作activemq

  1. 引入依赖
<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-all</artifactId>
  <version>5.15.8</version>
</dependency>
  1. 消费者
package com.tkxb.mqdemo.simple.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class HelloWorldConsumer {
    public static void main(String[] args) {
        new ConsumerThread("tcp://activemq.tkxb.com:61616", "helloWorldQueue").start();
        new ConsumerThread("tcp://activemq.tkxb.com:61616", "helloWorldQueue").start();
    }

   static class ConsumerThread extends Thread {

        String brokerUrl;
        String destinationUrl;

        public ConsumerThread(String brokerUrl, String destinationUrl) {
            this.brokerUrl = brokerUrl;
            this.destinationUrl = destinationUrl;
        }

        @Override
        public void run() {
            ActiveMQConnectionFactory connectionFactory;
            Connection conn;
            Session session;
            MessageConsumer consumer;

            try {
                // brokerURL http://activemq.apache.org/connection-configuration-uri.html
                // 1、创建连接工厂
                connectionFactory = new ActiveMQConnectionFactory(this.brokerUrl);
                // 2、创建连接对象
                conn = connectionFactory.createConnection();
                conn.start(); // 一定要启动
                // 3、创建会话(可以创建一个或者多个session)
                session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
                // 4、创建点对点接收的目标,queue - 点对点
                Destination destination = session.createQueue(destinationUrl);

                // 5、创建消费者消息 http://activemq.apache.org/destination-options.html
                consumer = session.createConsumer(destination);

                // 6、接收消息(没有消息就持续等待)
                Message message = consumer.receive();
                if (message instanceof TextMessage) {
                    System.out.println("收到文本消息:" + ((TextMessage) message).getText());
                } else {
                    System.out.println(message);
                }

                consumer.close();
                session.close();
                conn.close();
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

}

  1. 生产者
package com.tkxb.mqdemo.simple.queue;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionFactoryCustomizer;

import javax.jms.*;

public class HelloWorldProvider {


    public static void main(String[] args) {
        new ProducerThread("tcp://activemq.tkxb.com:61616", "helloWorldQueue").start();
    }

    static class ProducerThread extends Thread {
        String brokerUrl;
        String destinationUrl;

        public ProducerThread(String brokerUrl, String destinationUrl) {
            this.brokerUrl = brokerUrl;
            this.destinationUrl = destinationUrl;
        }

        @Override
        public void run() {
            ActiveMQConnectionFactory activeMQConnectionFactory;

            Connection connection;

            try {
                //1.创建连接工厂
                activeMQConnectionFactory = new ActiveMQConnectionFactory(brokerUrl);
                //2.使用工厂创建连接对象
                connection = activeMQConnectionFactory.createConnection();
                //3.创建会话对象
                Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                //4.创建点对点的目标
                Queue queue = session.createQueue(destinationUrl);
                //5.创建生产者的销售
                MessageProducer producer = session.createProducer(queue);
                // 设置生产者的模式,有两种可选 持久化 / 不持久化
                producer.setDeliveryMode(DeliveryMode.PERSISTENT);
                //6.创建一个文本信息
                String text = "Hello world!";
                TextMessage message = session.createTextMessage(text);
                for (int i = 0; i < 1; i++) {
                    // 7、发送消息
                    producer.send(message);
                }
                // 8、 关闭连接
                session.close();
                connection.close();
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

}

整合springboot使用

  1. 引入依赖
 <dependencies>
        <!--直接使用spring-boot-starter-activemq-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <!-- MQTT -->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-mqtt</artifactId>
        </dependency>
    </dependencies>
  1. 消费者
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.annotation.JmsListener;

@SpringBootApplication
@EnableJms
public class Consumer {

    @JmsListener(destination = "queue1")
    public void receive(String message) {
        System.out.println("收到消息:" + message);
    }

    public static void main(String[] args) {
        SpringApplication.run(Consumer.class, args);
    }
}

  1. 生产者
package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.core.JmsTemplate;

import javax.annotation.PostConstruct;

@SpringBootApplication
public class Producer {

    @Autowired
    private JmsTemplate jmsTemplate;

    @PostConstruct
    public void init() {
        jmsTemplate.convertAndSend("queue1", "Hello Spring 4");
    }

    public static void main(String[] args) {
        SpringApplication.run(Producer.class, args);
    }
}


  1. 配置文件
spring.activemq.broker-url=tcp://activemq.tkxb.com:61616
spring.activemq.user=admin
spring.activemq.password=admin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值