Rabbitmq入门2

1.消息存活时间

可以对单个消息或者对整个队列设置过期时间,当消息到达存活时间还没有被消费,就会被队列移除。

有消息过期时间的队列可以在UI界面上看到

设置队列所有消息过期时间

 

@Bean("queue")
public Queue getQueue() {
    return QueueBuilder.ttl(10000).build(); // 队列的每条消息保存10s
}

设置单条消息存活时间

 

MessageProperties messageProperties = new MessageProperties();
    messageProperties.setExpiration("6000"); // 6s
    Message message = new Message("test1".getBytes(StandardCharsets.UTF_8), messageProperties);
    rabbitTemplate.convertAndSend("test1", "testchange",message);

如果队列和消息同时设置过期时间,以时间短的为准。

2.消息优先级

RabbitMQ 自 V3.5.0有优先级队列的实现

消息设置优先级后,优先级越高,消息越早被消费。

优先级0-255之间,建议0-10  

每个队列的优先级存在一些内存中和磁盘上的成本,还有额外的 CPU 成本,尤其是在使用时,因此可能不希望创建大量级别。

创建优先级队列

QueueBuilder.maxPriority(10) .build();

创建优先级消息

MessageProperties messageProperties = new MessageProperties();
        messageProperties.setExpiration("5000"); // 5s
        messageProperties.setPriority(10); // 设置消息的优先级

        Message message = new Message("topic_exchange_message".getBytes(StandardCharsets.UTF_8), messageProperties);

优先级只有在消息堆积的时候生效,如果消费者处理消息效率特别高,则可能不生效

3.死信队列

当消息成为无法被消费的消息时,会成为死信,进而进入死信队列。

死信队列,死信交换机和普通的交换机 队列没有区别。

消息成为死信的情况:

  1. 队列消息长度到达限制。
  2. 消费者拒签消息,并且不把消息重新放入原队列。
  3. 消息到达存活时间未被消费。

主要操作方式为1.创建死信交换机,创建死信队列 2.普通队列出了需要绑定交换机外,还需要绑定死信交换机和死信路由关键字

 

QueueBuilder
.durable(NORMAL_QUEUE)
.deadLetterExchange(DEAD_EXCHANGE) // 绑定死信交换机
.deadLetterRoutingKey("dead_routing") // 死信队列路由关键字
.ttl(10000) // 消息存活10s
.maxLength(10) // 队列最大长度为10
.build();

4.延迟队列

使用死信队列实现延迟队列

缺点:消息不会立马执行

一般很少使用这个实现

可以使用插件实现延迟队列

地址:Community Plugins | RabbitMQ

 将rabbitmq_delayed_message_exchange上传指定目录下使用unzip解压即可
安装目录: /rabbitmq/plugins

执行

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

如果使用的时docker

docker cp rabbitmq_delayed_message_exchange-3.9.0.ez 095a83361bf9:/plugins

进入容器操作

docker exec -it 你的RabbitMQ名称或容器id /bin/bash

启动插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

最后在控制台查看 如果出现了 x-delayed-message则说明插件安装成功

代码应用

  message.getMessageProperties().setDelay(15000);

至此rabbitmq入门成功

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RabbitMQ是一款使用Erlang语言开发的开源消息中间件,实现了AMQP(高级消息队列协议)。它具有以下特点: 1. 可靠性:支持持久化、传输确认、发布确认等机制,保证了消息的可靠性。 2. 灵活的消息分发策略:消息在进入RabbitMQ之前由交换机进行路由,可以根据不同的分发策略进行消息的分发,包括简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式等。 3. 支持集群:多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker,提高了可用性和扩展性。 4. 支持多种协议和语言客户端:RabbitMQ支持多种消息队列协议,如STOMP、MQTT等,同时也支持多种编程语言的客户端。 5. 可视化管理界面:RabbitMQ提供了一个易用的用户界面,方便用户监控和管理消息Broker。 6. 插件机制:RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。 要开始使用RabbitMQ,首先需要安装RabbitMQ并配置相关信息。在Windows系统中,可以按照官方文档的指引进行安装。在配置文件中,需要指定RabbitMQ的主机、端口、用户名和密码等信息。 参考资料: \[1\] RabbitMQ官网 \[2\] application.yml配置文件 \[3\] RabbitMQ入门指南文章 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [超详细的RabbitMQ入门](https://blog.csdn.net/Rok728/article/details/123106242)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值