《RabbitMQ系列教程-第三章-RabbitMQ快速入门》_queue status是idle

    </dependency>
</dependencies>

#### 生产者类:



package com.lscl.rabbitmq;

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

public class Producer01_Hello {

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

    // 1. 创建连接工厂
    ConnectionFactory factory = new ConnectionFactory();

    // 2. 设置连接参数
    factory.setHost("192.168.133.147");
    factory.setPort(5672);
    factory.setVirtualHost("/");
    factory.setUsername("guest");
    factory.setPassword("guest");

    // 3. 获取连接对象
    Connection connection = factory.newConnection();

    // 4. 通过connection获取Channel
    Channel channel = connection.createChannel();

    // 5. 定义一个交换机
    /\*

参数1(queue): 队列名称
参数2(durable): 是否要持久化队列(mq重启之后还在)
参数3(exclusive): 是否是独占队列(只能有一个消费者监听此队列,没有也不行)
参数4(autoDelete): 是否自动删除(当没有Consumer时,队列自动删除)
参数5(arguments): 队列的其他参数(过期时间、最大消息容量等)
*/
channel.queueDeclare(“hello_world”,true,false,false,null);

    String body="hello world";

    // 6.发送消息
    /\*

参数1(exchange): 交换机的名称,简单模式下交换机会使用默认的交换机""
参数2(routingKey): routingKey,路由名称,在简单模式下,routingKey就是队列名称
参数3(props): 消息的一些配置信息
参数4(body): 发送的消息(字节)
*/
channel.basicPublish(“”,“hello_world”,null,body.getBytes());

    // 7. 释放资源
    channel.close();
    connection.close();
}

}


查看RabbitMQ面板:


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210104152250898.png#pic_center)


#### RabbitMQ面板参数说明


* `Virtual host`:该队列所在的虚拟主机
* `Name`:队列名称
* `Features`:队列的特性,如是否持久化、是否是过期队列等
* `State`:此队列工作状态
	+ `running`:队列处于运行状态(正在创建队列、接受消息、消费消息等)
	+ `idle`:队列处于空闲状态
* `Ready`:已经准备好的消息(还未被消费)
* `Unacked`:未处理的消息(被拒绝签收)
* `Total`:总的消息数量
* `incoming`:消息的每秒接收个数
* `deliver / get`:消息的每秒消费个数
* `ack`:每秒手动签收消息个数


### 3.2 消息消费者


#### 引入依赖:


和消息生产的依赖一致


#### 消费者类:



package com.lscl.rabbitmq;

import com.rabbitmq.client.*;
import java.io.IOException;

public class Consumer01_Hello {

public static void main(String[] args) throws Exception{
    // 创建连接工厂,用于获取频道channel
    ConnectionFactory factory = new ConnectionFactory();

    // 设置连接参数
    factory.setHost("192.168.40.132");
    factory.setPort(5672);
    factory.setUsername("guest");
    factory.setPassword("guest");
    factory.setVirtualHost("/");

    // 2.创建连接
    Connection connection = factory.newConnection();

    // 3.创建频道
    Channel channel = connection.createChannel();

    // 4.创建队列
/\*

定义队列,如果没有此队列则创建,如果有则不创建
queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)

queue: 队列的名称
durable: 是否持久化队列(mq重启之后还在)
exclusive: 是否独占(只能有一个消费者监听此队列)
autoDelete: 是否自动删除(当没有Consumer时,自动删除掉)
arguments: 其他参数
*/
channel.queueDeclare(“hello_world”, true, false, false, null);

    // 5. 接收消息
/\*

basicConsume(String queue, boolean autoAck, Consumer callback)

queue: 队列名称
autoAck: 是否开启自动确认
callback: 回调对象
*/

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

### RabbitMQ 快速入门教程 #### 一、简介 RabbitMQ 是一种消息队列 (Message Queue),简称 MQ,由 Erlang 语言开发,基于 AMQP(高级消息队列协议)实现。作为一种应用程序间的通信方式,在分布式系统开发中有着广泛应用[^3]。 #### 二、环境搭建 为了连接并操作 RabbitMQ,需引入必要的 Java 类库: ```java import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; ``` 上述代码展示了用于创建与管理 RabbitMQ 连接的基础类导入语句[^2]。 #### 三、生产者发送消息至指定队列 当设置 `routingKey` 参数为 `"quick.orange.rabbit"` 的时候,该消息将会被路由到名称分别为 Q1 和 Q2 的两个队列中去[^1]。 ```java String queueName = "test_queue"; Channel channel = connection.createChannel(); channel.queueDeclare(queueName, false, false, false, null); String message = "Hello World!"; channel.basicPublish("", queueName, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'"); ``` #### 四、消费者接收来自特定队列的消息 下面是一个简单的例子来展示如何消费来自某个队列中的数据: ```java final Channel channel = connection.createChannel(); String queueName = "test_queue"; DeliverCallback deliverCallback = (consumerTag, delivery) -> { String message = new String(delivery.getBody(), "UTF-8"); System.out.println(" [x] Received '" + message + "'"); }; channel.basicConsume(queueName, true, deliverCallback, consumerTag -> { }); ``` #### 五、监控队列状态 可以通过命令行工具或其他 API 接口查询队列的状态信息;如果显示为空闲(`idle`)则表示当前没有任何未处理的任务正在等待执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值