RabbitMQ 学习(二)-- Hello World(简单模式)

简单模式:RabbitMQ tutorial - “Hello World!” — RabbitMQ

在下图中,“P” 是我们的生产者,“C” 是我们的消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区。

在这里插入图片描述

1、创建项目

IDEA 创建空项目(empty project): RabbitMQ 。创建 maven 子模块:rabbitmq-hello

导入依赖

<!-- rabbitmq 客户端依赖 -->
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.15.0</version>
</dependency>
<!-- 操作文件流的依赖 -->
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

2、编写代码

Web管理界面端口是: 15672

RabbitMQ的端口是: 5672

# 防火墙开启 5672 端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --add-port=5672/tcp
firewall-cmd --reload
# 查看开启了哪些端口
firewall-cmd --list-ports
1)生产者代码
/**
 * @desc 生产者
 * @auth llp
 * @date 2022年07月27日 22:15
 */
public class Producer {
    /** 队列名称 */
    private static final String QUEUE_NAME = "hello";

    // 发消息
    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 设置连接 RabbitMQ 的 IP
        factory.setHost("192.168.40.25");
        // 端口默认 factory.setPort(5672);
        // 用户名
        factory.setUsername("mianbao");
        // 密码
        factory.setPassword("admin");

        // 创建连接
        Connection connection = factory.newConnection();
        // 根据工作原理图 下一步获取信道
        Channel channel = connection.createChannel();
        // 使用默认的交换机
        /**
         * 生成一个队列 参数:
         * 1、队列名称
         * 2、队列里面的消息是否持久化(磁盘)默认情况消息存储在内存中
         * 3、该队列是否只供一个消费者进行消费是否进行消息共享。true:只能一个消费者消费 false:消费可以多个消费者消费
         * 4、是否自动删除。最后一个消费者断开连接以后,该队列是否自动删除 true:自动删除 false:不自动删除
         * 5、队列的其他属性(构造参数)
         */
        channel.queueDeclare(QUEUE_NAME, false, false, false,null);
        // 发消息
        String message = "Hello RabbitMQ";

        /**
         * 发送一个消息 参数:
         * 1、发送到哪个交换机
         * 2、路由 Key 是哪个 (本次是队列名称)
         * 3、其他参数
         * 4、发送消息的消息体
         */
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println("========== 消息发送完毕 ============");
    }
}

运行生产者代码后,查看 RabbitMQ web 管理界面:

在这里插入图片描述

在这里插入图片描述

2)消费者代码
/**
 * @desc 消费者 接收消息
 * @auth llp
 * @date 2022年07月27日 22:44
 */
public class Consumer {
    /** 队列名称 */
    private static final String QUEUE_NAME = "hello";
    // 接收消息
    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.40.25");
        // 端口默认 factory.setPort(5672);
        factory.setUsername("mianbao");
        factory.setPassword("admin");
        // 创建连接
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        /**
         * 消费者 消费消息
         * 1、队列的名称
         * 2、消费成功之后是否要自动应答。 true:代表的自动应答 false:代表手动应答
         * 3、消息传递时的回调
         * 4、消费者取消时的回调
         */
        // 消费成功的回调
        DeliverCallback deliverCallback = (consumerTag, message)-> System.out.println(new String(message.getBody()));
        // 消息消费失败的回调
        CancelCallback cancelCallback = consumerTag -> System.out.println("消息消费中断...");
        channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);
    }
}

运行测试

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值