ActiveMQ简单的入门demo

:)

1.为什么使用ActiveMQ

1.1.简介

1.2.MQ特点

1.3.使用场景

2.基本操作的demo

3.能干什么



1.为什么使用ActiveMQ

1.1.简介

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

1.2.MQ特点

MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。

1.3.使用场景

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

2.基本操作的demo


    //生产者
    static void testMQProducerQueue() throws Exception{
        //创建连接工厂,设定ip和端口号
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
        //创建连接
        Connection connection = connectionFactory.createConnection();
        //打开连接
        connection.start();
        //创建会话
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        //创建队列,队列名叫test-queue
        Queue queue =session.createQueue("test-queue");
        //创建消息生产者
        MessageProducer producer = session.createProducer(queue);
        //创建一个字符串消息
        TextMessage textMessage = session.createTextMessage("hellow_mq");
        //发送消息
        producer.send(textMessage);
        //关闭资源
        producer.close();
        session.close();
        connection.close();
    }
    //消费者
    static void testMQConsumerQueue() throws Exception{
        //创建连接工厂,设定ip和端口号
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
        //创建连接
        Connection connection = connectionFactory.createConnection();
        //打开连接
        connection.start();
        //创建会话
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        //创建队列,队列名叫test-queue
        Queue queue =session.createQueue("test-queue");
        //创建消费者
        MessageConsumer consumer = session.createConsumer(queue);
        //创建消息监听器
        consumer.setMessageListener(new MessageListener() {
            @Override
            public void onMessage(Message message) {
                if (message instanceof TextMessage){
                    TextMessage textMessage = (TextMessage)message;
                    try {
                        System.out.println(textMessage.getText());
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        //程序接收内容,主要是为了不让连接那么快关闭,因为消息可能还没来得及过来
        System.in.read();
        //关闭资源
        consumer.close();
        session.close();
        connection.close();
    }

3.能干什么

1.流量削峰

2.任务异步处理

特点:可以解耦合

     (学习新技术的三要素:是什么?能干什么?有什么优势?)

猜你喜欢

转载自blog.csdn.net/idiot_qi/article/details/83147015
今日推荐