Java消息中间件学习入门:演示activemq的安装和使用方法

Java消息中间件学习入门:演示activemq的安装和使用方法

我们演示activemq的安装和使用方法。


第一步:

首先,去官网下载安装。

网址:http://activemq.apache.org/activemq-5153-release.html

直接下载Windows版本的。


第二步:

解压到自己的软件安装目录里面。


这里有32位和64位2种,可以自由选择。这里我使用的是64位的。

打开bin目录。


使用方法有2种:

第一种:

选择第一个文件activemq.bat然后右键,以管理员身份运行。


然后会弹出dos窗口,代表启动成功。



然后我们可以打开本地访问地址:http://127.0.0.1:8161/

然后登陆。登录名和密码都是admin


登陆进去以后,是这样的:


如果每次使用都这样登陆比较麻烦。所以,下面讲第二种方法。

第二种方法:

选择第二个文件InstallService.bat右键运行。


然后打开服务:计算机-管理-服务:


选择启动就可以了。访问方式跟第一种方法一样。


================

使用方法:

队列模式和主题模式。

首先队列模式:

生产者:

package com.imooc.jms.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
//在本地创建一百个生产者队列消息
public class AppProducer {
    //设置端口地址:这里设置的是本地的
    private static final String url = "tcp://127.0.0.1:61616";
    //设置队列名字
    private static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {
        //1.创建工厂ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        //2.创建Connection
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标
        Destination destination = session.createQueue(queueName);
        //6.创建一个生产者
        MessageProducer producer = session.createProducer(destination);
        for (int i = 0;i<100;i++){
            //7.创建消息
            TextMessage textMessage = session.createTextMessage("test" + i);
            //8.发布消息
            producer.send(textMessage);
            //打印
            System.out.println("发送消息" + textMessage.getText());
        }
        //9.关闭连接
        connection.close();
    }
}

消费者:

package com.imooc.jms.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
//在本地创建一百个消费者队列消息
public class AppConsumer {
    //设置端口地址:这里设置的是本地的
    private static final String url = "tcp://127.0.0.1:61616";
    //设置队列名字
    private static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {
        //1.创建工厂ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        //2.创建Connection
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标
        Destination destination = session.createQueue(queueName);
        //6.创建一个消费者
        MessageConsumer consumer = session.createConsumer(destination);
        //7.创建一个监听器
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                TextMessage textMessage = (TextMessage) message;
                try {
                    System.out.println("接收消息" + textMessage.getText());
                }catch (JMSException e){
                    e.printStackTrace();
                }
            }
        });
        //如果设置了关闭连接的话。程序会出错。
        // 不会接收到消息。因为这个消费者程序是一个异步的过程,要监听。
        //所以说它还没接收到消息的时候就关闭了的话。就接收不到消息了
//        connection.close();
    }
}

主题模式:

生产者:

package com.imooc.jms.topic.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
//主题模式的消息演示
//在本地创建一百个生产者队列消息
public class AppProducer {
    //设置端口地址:这里设置的是本地的
    private static final String url = "tcp://127.0.0.1:61616";
    //设置队列名字
    private static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException {
        //1.创建工厂ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        //2.创建Connection
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标,主题模式和队列模式的创建方式几乎一模一样。只是这一步,需要改成topic改成session.createTopic
        Destination destination = session.createTopic(topicName);
        //6.创建一个生产者
        MessageProducer producer = session.createProducer(destination);
        for (int i = 0;i<100;i++){
            //7.创建消息
            TextMessage textMessage = session.createTextMessage("test" + i);
            //8.发布消息
            producer.send(textMessage);
            //打印
            System.out.println("发送消息" + textMessage.getText());
        }
        //9.关闭连接
        connection.close();
    }
}

消费者:

package com.imooc.jms.topic.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

//在本地创建一百个消费者队列消息
public class AppConsumer {
    //设置端口地址:这里设置的是本地的
    private static final String url = "tcp://127.0.0.1:61616";
    //设置队列名字
    private static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException {
        //1.创建工厂ConnectionFactory
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        //2.创建Connection
        Connection connection = connectionFactory.createConnection();
        //3.启动连接
        connection.start();
        //4.创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //5.创建一个目标
        Destination destination = session.createTopic(topicName);
        //6.创建一个消费者
        MessageConsumer consumer = session.createConsumer(destination);
        //7.创建一个监听器
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                TextMessage textMessage = (TextMessage) message;
                try {
                    System.out.println("接收消息" + textMessage.getText());
                }catch (JMSException e){
                    e.printStackTrace();
                }
            }
        });
        //如果设置了关闭连接的话。程序会出错。
        // 不会接收到消息。因为这个消费者程序是一个异步的过程,要监听。
        //所以说它还没接收到消息的时候就关闭了的话。就接收不到消息了
//        connection.close();
    }
}

未完待续...



猜你喜欢

转载自blog.csdn.net/qq_22182989/article/details/80393454
今日推荐