首页 > TAG信息列表 > deliveryTag
RabbitMQ
1、RabbitMQ的作用异步处理应用解耦流量控制、削峰2、概述1)消息中间件有两个重要的概念:消息代理和目的地当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定目的地2)消息队列主要有两种形式的目的地队列(queue)点对点的消息通信(point to point)主题(topic) 发布(publish)RabbitMQ消息确认机制
概念 确认机制--》可靠抵达 发送端确认 #配置文件中 开启发送端到达服务器确认 spring.rabbitmq.publisher-confirms = true #开启发送端消息抵达队列确认 spring.rabbitmq.publisher-returns = true #只要抵达队列,以异步发送优先回调我们这个returnConfirm spring.rabbitmq.tempRabbitMQ 消息队列回执 basicReject basicNack basicRecover 用法和区别
basic.reject方法 channel.basicReject(deliveryTag, true); 拒绝deliveryTag对应的消息,第二个参数是否requeue,true则重新入队列,否则丢弃或者进入死信队列。 该方法reject后,该消费者还是会消费到该条被reject的消息。 basic.nack方法 channel.basicNack(deliveryTag, false,springboot整合RabbitMQ消费端手动ACK确认机制
ack——acknowledge(vt. 承认;答谢;报偿;告知已收到;确认的意思),在RabbitMQ中指代的是消费者收到消息后确认的一种行为,关注点在于消费者能否实际接收到MQ发送的消息。 其提供了三种确认方式: 自动确认acknowledge=“none”:当消费者接收到消息的时候,就会自动给到RabbitMQ一个回执,告RabbitMQ 之消息应答
消息应答概念 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况? RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给如何确认RabbitMq发送消息的可靠性
如何确认RabbitMq发送消息的可靠性 消息真的发出去了吗? 消息发送后,发送端不知道RabbitMQ是否真的收到了消息,如果RabbitM异常,那么消息丢失后,业务流程就停止,发生异常,所以我们需要使用RabbitMq发送端确认机制,确认消息发送 消息确认机制分为:单条同步确认机制,多条同步确认机制和RabbitMQ-Ack确认机制与消费端限流
@Componentpublic class AckListener implements ChannelAwareMessageListener { /** * 1、设置手动签收:acknowledge="manual" * 2、监听器实现接口ChannelAwareMessageListener * 3、如果消息成功,调用basicAck()签收 * 4、如果消息失败,调用basicNack()拒绝签rabbitmq 消息确认机制: 事务 + confirm
package com.example.demo.util; import com.rabbitmq.client.*;import java.io.IOException;import java.util.SortedSet;import java.util.TreeSet;/** * rabbitmq 工具类 * * @author yangxj * @date 2020-03-25 20:30 */public class RabbitMQUtils { /** * 获取rabbitRabbitMQ的消息确认机制
一、RabbitMQ消息确认机制 RabbitMQ的消息确认有两种:1、对生产端发送消息的确认。这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。2、对消费端消费消息的确认。这种是确认消费者