RabbitMQ简单学习教程

RabbitMQ简介

在这里插入图片描述
在学习mq时,首先要先了解什么是消息队列。
《一个故事告诉你什么是消息队列》

RabbitMQ环境搭建

下载地址:http://www.rabbitmq.com/download.html
然后就是next一路点点点,搭建步骤不展示了。
在这里插入图片描述
到这,默认guest登录即可。

iead搭建rabbitmq项目

导入rabbitmq依赖。

<dependency>
	<groupId>com.rabbitmq</groupId>
	<artifactId>amqp-client</artifactId>
	<version>3.4.1</version>
</dependency>

获取mq的连接

public class RabbitTest {

    public static Connection getConnection() throws Exception {
        //定义连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("localhost");
        //端口
        factory.setPort(5672);
        //设置账号信息,用户名、密码、vhost

        factory.setUsername("test");
        factory.setPassword("root");
        // 通过工程获取连接
        Connection connection = factory.newConnection();
        return connection;
    }

}

生产者发送消息

public class Send {
    private final static String QUEUE_NAME = "q_test_01";

    public static void main(String[] args) throws Exception {
        // 获取到连接以及mq通道
        Connection connection = RabbitTest.getConnection();
        // 从连接中创建通道
        Channel channel = connection.createChannel();

        // 声明(创建)队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 消息内容
        String message = "Hello World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent '" + message + "'");
        //关闭通道和连接
        channel.close();
        connection.close();
    }

}

这时,查看管理工具队列信息,消息已经入队列。
在这里插入图片描述
查看队列信息,getMassage即可获取队列中的消息。
在这里插入图片描述
消费者消费队列。

public class Recv {

    private final static String QUEUE_NAME = "q_test_01";

    public static void main(String[] argv) throws Exception {

        // 获取到连接以及mq通道
        Connection connection = ConnectionUtil.getConnection();
        // 从连接中创建通道
        Channel channel = connection.createChannel();
        // 声明队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        // 定义队列的消费者
        QueueingConsumer consumer = new QueueingConsumer(channel);

        // 监听队列
        channel.basicConsume(QUEUE_NAME, true, consumer);

        // 获取消息
        while (true) {
            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
            String message = new String(delivery.getBody());
            System.out.println(" [x] Received '" + message + "'");
        }
    }
}

生产者和消费者概念,请查看文章: 生产者/消费者模式的理解及实现

发布了5 篇原创文章 · 获赞 5 · 访问量 146

猜你喜欢

转载自blog.csdn.net/weixin_44615512/article/details/104990005