【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

这篇具有很好参考价值的文章主要介绍了【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 🦁 前言

RabbitMQ 是一种快速、灵活、可靠的消息传递方式,可用于构建分布式应用程序、异步处理任务、实现消息队列等。下面是 Java 原生操作 RabbitMQ 的一些好处和用途:

  1. 简单易用:RabbitMQ 提供了丰富的 Java 客户端库,开发者可以轻松地使用 Java 代码进行消息发送和接收,无需学习复杂的消息传递协议和 API。

  2. 可扩展性强:RabbitMQ 支持集群和分布式部署,可以轻松地实现横向和纵向扩展,以适应不同规模和负载的应用需求。

  3. 可靠性高:RabbitMQ 提供了多种消息传递模式,包括持久化消息、确认机制、事务机制等,确保消息传递的可靠性和一致性。

  4. 异步处理能力:RabbitMQ 可以异步处理任务,提高应用程序的响应速度和吞吐量,实现任务削峰、应对高并发等需求。

  5. 可用于多种场景:RabbitMQ 可以用于构建分布式应用程序、实现消息队列、异步处理任务、实现实时数据同步等场景,具有广泛的应用场景和发展前景。

二. 🦁 原生Java操作RabbitMQ

Ⅰ. 简单模式

1. 添加依赖

    <!--rabbitmq依赖-->
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>5.14.0</version>
    </dependency>

2. 编写生产者

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//生产者
public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
//        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.建立信道
        Channel channel = connection.createChannel();
//        4.创建队列,若队列已存在则使用该队列
        /**
         * 参数1:队列名
         * 参数2:是否持久化,true表示MQ重启后队列还存在
         * 参数3:是否私有化,false表示所有消费者都可以访问,true表示只有第一次访问她的消费者才能访问
         * 参数4:是否自动删除,true表示不再使用队列时,自动删除
         * 参数5:其他额外参数
         */
        channel.queueDeclare("simple_queue",false,false,false,null);
//        5.发送消息
        String message = "hello rabbitmq";
        /**
         * 参数1:交换机名,""表示默认交换机
         * 参数2:路由键,简单模式就是队列名
         * 参数3:其他额外参数
         * 参数4:要传递的消息字节数组
         */
        channel.basicPublish("","simple_queue",null,message.getBytes());
//        6.关闭信道和连接
        channel.close();
        connection.close();
        System.out.println("=====发送成功====");
    }
}

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

3. 编写消费者

因为消费者不知道生产者什么时候发送消息过来,所以消费者需要一直监听生产者

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 消费者
 */
public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
//        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("simple_queue",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("接收消息,消息为:"+message);
            }
        });
    }
}

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

Ⅱ. 工作队列模式

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

与简单模式相比,工作队列模式(Work Queue)多了一些消费者,该模式也使用direct交换机,应用于处理消息较多的情况。特点如下:

  1. 一个队列对应多个消费者。
  2. 一条消息只会被一个消费者消费。
  3. 消息队列默认采用轮询的方式将消息平均发送给消费者。

其实就是 简单模式plus版本。

1. 编写生产者

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
//        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.创建队列,持久化队列
        channel.queueDeclare("work_queue",true,false,false,null);
//        5.发送大量消息,参数3表示该消息为持久化消息,即除了保存到内存还保存到磁盘
        for (int i = 0; i < 100; i++) {
            channel.basicPublish("","work_queue", MessageProperties.PERSISTENT_TEXT_PLAIN,
                    ("您好,这是今天的第"+i+"条消息").getBytes(StandardCharsets.UTF_8));
        }
//        6.关闭资源
        channel.close();
        connection.close();
    }
}

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

2. 编写消费者

这里使用创建了三个消费者,来接收生产者的消息

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        监听队列,处理消息
        channel.basicConsume("work_queue",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("消费者1消费消息,消息为:"+message);
            }
        });
    }
}

3. 实现

先把三个消费者运行起来,再运行生产者,得到的消息就会轮询均分

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

Ⅲ. 发布订阅模式

在开发过程中,有一些消息需要不同消费者进行不同的处理,如电商网站的同一条促销信息需要短信发送、邮件发送、站内信发送等。此时可以使用发布订阅模式(Publish/Subscribe)

特点:

  1. 生产者将消息发送给交换机,交换机将消息转发到绑定此交换机的每个队列中。
  2. 工作队列模式的交换机只能将消息发送给一个队列,发布订阅模式的交换机能将消息发送给多个队列。发布订阅模式使用fanout交换机。

1. 编写生产者

这里创建了三条队列,一条是发送短信,一条是站内信,一条是邮件队列、

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import javax.swing.plaf.TreeUI;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

/**
 * 发布订阅者模式跟简单和工作模式不一样,不是使用默认的交换机,而是自己创建fanout交换机,生产者把消息发到交换机,由交换机转发到与之绑定的队列
 */
public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.建立信道
        Channel channel = connection.createChannel();
//        4.创建交换机
        /**
         * 参数1:交换机名
         * 参数2:交换机类型
         * 参数3:交换机是否持久化
         */
        channel.exchangeDeclare("exchange_fanout", BuiltinExchangeType.FANOUT,true);
//        5.创建队列
        channel.queueDeclare("SEND_MAIL",true,false,false,null);
        channel.queueDeclare("SEND_MESSAGE",true,false,false,null);
        channel.queueDeclare("SEND_STATION",true,false,false,null);
//        6.交换机绑定队列
        /**
         * 参数1:队列名
         * 参数2:交换机名
         * 参数3:路由关键字,发布订阅模式只需要写""即可
         */
        channel.queueBind("SEND_MAIL","exchange_fanout","");
        channel.queueBind("SEND_MESSAGE","exchange_fanout","");
        channel.queueBind("SEND_STATION","exchange_fanout","");
//        7.发送消息
        for (int i = 0; i < 10; i++) {
            channel.basicPublish("exchange_fanout","",null,
                    ("您好,尊敬的用户,秒杀商品活动开始啦:"+i).getBytes(StandardCharsets.UTF_8));
        }
//        8.关闭资源
        channel.close();
        connection.close();
    }
}

2. 编写消费者

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//短信消费者
public class ConsumerMessage {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_MESSAGE",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送短信,消息为:"+message);
            }
        });
    }
}

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//邮件消费者
public class ConsumerMail {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_MAIL",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送邮件,消息为:"+message);
            }
        });
    }
}
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

//站内信消费者
public class ConsumerStation {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_STATION",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送站内信,消息为:"+message);
            }
        });
    }
}

发布订阅模式也允许多个消费者监听同一个队列(工作模式),例如 两个发送短信消费者监听同一个短信生产者,这样短信生产者的消息将会被轮询平分。

Ⅳ. 路由模式

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

使用发布订阅模式时,所有消息都会发送到绑定的队列中,但很多时候,不是所有消息都无差别的发布到所有队列中。比如电商网站

的促销活动,双十一大促可能会发布到所有队列;而一些小的促销活动为了节约成本,只发布到站内信队列。此时需要使用路由模式

(Routing)完成这一需求。意思就是只发给与绑定相同路由关键字的队列

特点:

  1. 每个队列绑定路由关键字RoutingKey。

  2. 生产者将带有RoutingKey的消息发送给交换机,交换机根据RoutingKey转发到指定队列。路由模式使用direct交换机。

1. 编写生产者

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

/**
 * 发布订阅者模式跟简单和工作模式不一样,不是使用默认的交换机,而是自己创建fanout交换机,生产者把消息发到交换机,由交换机转发到与之绑定的队列
 */
// 生产者
public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
        // 2.创建连接
        Connection connection = connectionFactory.newConnection();
        // 3.建立信道
        Channel channel = connection.createChannel();
        // 4.创建交换机
        channel.exchangeDeclare("exchange_routing", BuiltinExchangeType.DIRECT,true);
        // 5.创建队列
        channel.queueDeclare("SEND_MAIL2",true,false,false,null);
        channel.queueDeclare("SEND_MESSAGE2",true,false,false,null);
        channel.queueDeclare("SEND_STATION2",true,false,false,null);
        // 6.交换机绑定队列
        channel.queueBind("SEND_MAIL2","exchange_routing","import");
        channel.queueBind("SEND_MESSAGE2","exchange_routing","import");
        channel.queueBind("SEND_STATION2","exchange_routing","import");
        channel.queueBind("SEND_STATION2","exchange_routing","normal");
        // 7.发送消息
        channel.basicPublish("exchange_routing","import",null,
                "双十一大促活动".getBytes());
        channel.basicPublish("exchange_routing","normal",null,
                "小心促销活动".getBytes());
        // 8.关闭资源
        channel.close();
        connection.close();
    }
}

2. 编写消费者

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//发送邮件消费者
public class ConsumerMail {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_MAIL2",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送邮件,消息为:"+message);
            }
        });
    }
}

//发送信息消费者
public class ConsumerMessage {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_MESSAGE2",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送短信,消息为:"+message);
            }
        });
    }
}

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

//站内信消费者
public class ConsumerStation {
    public static void main(String[] args) throws IOException, TimeoutException {
        //        1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
//        2.创建连接
        Connection connection = connectionFactory.newConnection();
//        3.创建信道
        Channel channel = connection.createChannel();
//        4.监听队列
        /**
         * 参数1:监听的队列名
         * 参数2:是否自动签收,如果为false,则需要手动确认消息已收到,否则MQ会一直发送消息。
         * 参数3:Consumer的实现类,重写该类方法表示接收到这个消息之后该如何消费消息
         */
        channel.basicConsume("SEND_STATION2",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println("发送站内信,消息为:"+message);
            }
        });
    }
}

Ⅴ. 通配符模式

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

通配符模式(Topic)是在路由模式的基础上,给队列绑定带通配符的路由关键字,只要消息的RoutingKey能实现通配符匹配,就会将消

息转发到该队列。通配符模式比路由模式更灵活,使用topic交换机。

通配符规则:

1 消息设置RoutingKey时,RoutingKey由多个单词构成,中间以 . 分割。

2 队列设置RoutingKey时, # 可以匹配任意多个单词, * 可以匹配任意一个单词。

1. 编写生产者

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

package com.itbz.mq.topic;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 发布订阅者模式跟简单和工作模式不一样,不是使用默认的交换机,而是自己创建fanout交换机,生产者把消息发到交换机,由交换机转发到与之绑定的队列
 */
// 生产者
public class Producer {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("120.79.50.65");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("lion");
        connectionFactory.setPassword("lion");
        connectionFactory.setVirtualHost("/");
        // 2.创建连接
        Connection connection = connectionFactory.newConnection();
        // 3.建立信道
        Channel channel = connection.createChannel();
        // 4.创建交换机
        channel.exchangeDeclare("exchange_topic", BuiltinExchangeType.TOPIC,true);
        // 5.创建队列
        channel.queueDeclare("SEND_MAIL3",true,false,false,null);
        channel.queueDeclare("SEND_MESSAGE3",true,false,false,null);
        channel.queueDeclare("SEND_STATION3",true,false,false,null);
        // 6.交换机绑定队列
        channel.queueBind("SEND_MAIL3","exchange_topic","#.mail.#");
        channel.queueBind("SEND_MESSAGE3","exchange_topic","#.message.#");
        channel.queueBind("SEND_STATION3","exchange_topic","#.station.#");
        // 7.发送消息
            // 三个队列都匹配上了
        channel.basicPublish("exchange_topic","mail.message.station",null,
                "双十一大促活动".getBytes());
            // 只发给station
        channel.basicPublish("exchange_topic","station",null,
                "小心促销活动".getBytes());
        // 8.关闭资源
        channel.close();
        connection.close();
    }
}

2. 编写消费者

跟前面差不多。。。

三. 🦁 总结

这篇万字长文总结了原生Java操作RabbitMQ的各种过程,希望对您有帮助哦!!!咱们下期见!😄文章来源地址https://www.toymoban.com/news/detail-428237.html

到了这里,关于【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生 | 27】Docker部署运行开源消息队列实现RabbitMQ

    作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅 ✒️个人主页:小鹏linux 💊个人社区:小鹏linux(个人社区)欢迎您的加入! 目录 1. 关于MQ 1.1 什么是MQ? 1.2 MQ是干什么用的?  1.3 MQ衡量标准  1.4 主流竞品分析  2. 关

    2024年01月20日
    浏览(45)
  • 【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年03月15日
    浏览(51)
  • [Data structure]队列&环形队列 | 一文带你彻底搞懂队列和环形队列(内附详细图解和代码实现)

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:数据结构。数据结构专栏主要是在讲解原理的基础上拿Java实现 ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁

    2023年04月17日
    浏览(95)
  • rabbitmq源码分析队列结构,详细解说

    OSI 与 TCP/IP 各层的结构与功能,都有哪些协议 TCP 建立连接的过程,为什么要三次握手? TCP、UDP 协议的区别,各自的应用场景 打开浏览器,输入 URL 地址,访问主页的过程 HTTP 有哪些方法? HTTP 和 HTTPS 有什么区别? HashMap 底层数据结构是什么,时间复杂度多少? JDK 8 中对

    2024年03月26日
    浏览(36)
  • MQ消息队列,以及RabbitMQ详细(中1)五种rabbitMQ实用模型

    书接上文,展示一下五种模型我使用的是spring could 微服务的框架 文章说明:         本文章我会分享总结5种实用的rabbitMQ的实用模型 1、hello world简单模型 2、work queues工作队列 3、Publish/Subscribe发布订阅模型 4、Routing路由模型 5、Topics 主题模型 (赠送) 6、消息转换器 Rabbi

    2024年02月05日
    浏览(52)
  • 清空所有队列和消息的RabbitMQ操作指南

    RabbitMQ是一种功能强大的消息代理,用于在应用程序之间传递消息。有时候,我们可能需要清空RabbitMQ中的所有队列和消息,以便重新开始或进行测试。本文将介绍如何使用RabbitMQ的管理插件和AMQP协议来清空所有队列和消息。 步骤1:安装RabbitMQ管理插件 要使用RabbitMQ的管理插

    2024年02月06日
    浏览(40)
  • 【rabbitMQ】-延迟队列-模拟控制智能家居的操作指令

    这个需求为控制智能家居工作,把控制智能家居的操作指令发到队列中,比如:扫地机、洗衣机到指定时间工作   一.什么是延迟队列? 延迟队列存储的对象是对应的延迟消息,所谓“延迟消息” 是指当消息被发送以后, 并不想让消费者立刻拿到消息 ,而是等待特定时间后

    2024年02月06日
    浏览(40)
  • 【数据结构】—手把手带你用C语言实现栈和队列(超详细!)

                                       食用指南:本文在有C基础的情况下食用更佳                                     🔥 这就不得不推荐此专栏了:C语言                                   ♈️ 今日夜电波:Tell me —milet                    

    2024年02月14日
    浏览(100)
  • Go操作各大消息队列教程(RabbitMQ、Kafka)

    1.1 概念 ①基本名词 当前市面上mq的产品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的RocketMQ。甚至连redis这种NoSQL都支持MQ的功能。 Broker:表示消息队列服务实体 Virtual Host:虚拟主机。标识一批交换机、消息队列和相关对象。vhost是AMQP概念的基础,必须在链

    2024年02月11日
    浏览(32)
  • RabbitMq图形界面创建队列操作步骤及控制台使用说明

    版本:RabbitMQ 3.9.7 控台台访问路径: http://localhost:15672/#/queues 登录 创建队列 (1)输入自定义的队列名称 (2)其他输入参数为默认值即可 (3)点击【Add queue】创建队列成功 查看已创建队列信息 点击名称查看队列详情 登录后,您将看到 RabbitMQ 的控制台界面。该界面将显示

    2024年02月11日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包