月光代碼園

記錄、分享、交流

导航

ActiveMQ学习笔记#1

#0 下载安装activemq 访问控制台http://localhost:8161/ 默认用户名密码admin/admin

 #1 创建队列消息生产者

创建一个maven工程

    <dependencies>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.15.11</version>
        </dependency>
    </dependencies>

新建一个生产者类,activemq实例默认端口61616

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created by B on 2020/2/17.
 */
public class Producer {
    public static void main(String args[]) throws JMSException {
        //默认实例地址
        String brokerURL = "tcp://127.0.0.1:61616";
        // 1、创建一个连接工厂对象,需要指定服务的ip及端口。
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
        // 2、使用工厂对象创建一个Connection对象。
        Connection connection = connectionFactory.createConnection();
        // 3、开启连接,调用Connection对象的start方法。
        connection.start();
        // 4、创建一个Session对象。
        // 第一个参数:是否开启事务。如果true开启事务,第二个参数无意义。一般不开启事务false。
        // 第二个参数:应答模式。自动应答或者手动应答。一般自动应答。
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        // 5、使用Session对象创建一个Destination对象。两种形式queue、topic
        Queue queue = session.createQueue("test-queue");
        // 6、使用Session对象创建一个Producer对象。
        MessageProducer producer = session.createProducer(queue);
        // 7、创建一个Message对象,可以使用TextMessage。
        TextMessage textMessage = session.createTextMessage("生产者生产的消息,编号是"+System.currentTimeMillis()); 
System.out.println(
"新发送一条信息到队列,消息:"+textMessage.getText());
// 8、发送消息  
producer.send(textMessage);
// 9、关闭资源
producer.close(); session.close(); connection.close(); } }

运行

 查看控制台,此时显示队列中的消息统计情况,都还未被消费

#2 新建一个消费者

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
import java.io.IOException;

/**
 * Created by dell on 2020/2/17.
 */
public class Consumer {
    public static void main(String args[]) throws JMSException, IOException {
        String brokerURL = "tcp://127.0.0.1:61616";
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("test-queue");
        MessageConsumer consumer = session.createConsumer(queue);
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                if(message!=null && message instanceof TextMessage){
                    TextMessage textMessage = (TextMessage) message;
                    String text = null;
                    try {
                        text = textMessage.getText();
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                    System.out.println("消费者消费队列的消息 消息为:"+text);
                }
            }
        });
        // 等待接收消息
        System.in.read();
        // 关闭资源
        consumer.close();
        session.close();
        connection.close();
    }
}

运行 显示之前生产的消息被消费

 

 

posted on 2020-02-18 09:43  bangdikka  阅读(163)  评论(0编辑  收藏  举报