做直播网站,成都设计公司视频制作,建设网站需要什么信息,企业建站公司怎么创业#x1f9d1;#x1f4bb;作者名称#xff1a;DaenCode #x1f3a4;作者简介#xff1a;啥技术都喜欢捣鼓捣鼓#xff0c;喜欢分享技术、经验、生活。 #x1f60e;人生感悟#xff1a;尝尽人生百味#xff0c;方知世间冷暖。 文章目录 #x1f31f;架构图#x… 作者名称DaenCode 作者简介啥技术都喜欢捣鼓捣鼓喜欢分享技术、经验、生活。 人生感悟尝尽人生百味方知世间冷暖。 文章目录 架构图application.properties异常MQ配置异常MQ消费者注意写在最后 架构图 application.properties
##----------rabbit配置--------------
spring.rabbitmq.host49.233.48.98
spring.rabbitmq.port5672
#需要手工创建虚拟主机
spring.rabbitmq.virtual-hostdev
spring.rabbitmq.usernameadmin
spring.rabbitmq.passwordpassword
#消息确认方式manual(手动ack) 和auto(自动ack); 消息消费重试到达指定次数进到异常交换机和异常队列需要改为自动ack确认消息
spring.rabbitmq.listener.simple.acknowledge-modeauto
#开启重试消费者代码不能try catch捕获异常要抛出异常
spring.rabbitmq.listener.simple.retry.enabledtrue
#最大重试次数
spring.rabbitmq.listener.simple.retry.max-attempts4
# 重试消息的时间间隔5秒
spring.rabbitmq.listener.simple.retry.initial-interval5000异常MQ配置
Configuration
Slf4j
public class ErrorRabbitMQConfig {/*** 异常交换机*/private String errorExchangeerror.exchange;/*** 异常队列*/private String errorQueueerror.queue;private String errorRoutingKeyerror.routing.key;Autowiredprivate RabbitTemplate rabbitTemplate;/*** 创建异常交换机* return*/Beanpublic TopicExchange errorTopicExchange(){return new TopicExchange(errorExchange,true,false);}/*** 创建异常队列* return*/Beanpublic Queue errorQueue(){return new Queue(errorQueue,true);}/*** 建立绑定关系* return*/Beanpublic Binding bindingErrorQueueAndExchange(){return BindingBuilder.bind(errorQueue()).to(errorExchange()).with(errorRoutingKey);}/***消息重新发布到异常MQ*/Beanpublic MessageRecoverer messageRecoverer(){return new RepublishMessageRecoverer(rabbitTemplate,errorExchange,errorRoutingKey);}
}
异常MQ消费者
Component
Slf4j
RabbitListener(queuesToDeclare { Queue(error.queue) })
public class ErrorMQListener {RabbitHandlerprivate void errorMessageHandler(EventMessage eventMessage, Message message, Channel channel) throws IOException {log.info(监听到消息{},message);//进行消息消费//发送邮箱通知、告警服务}
}注意
业务MQ消费者代码逻辑记得往外抛异常进行try-catch了也要往外抛。消息消费重试达到重试次数进入到异常交换机、队列。消息确认方式需要改为自动ack。
写在最后
有关于项目实战之RabbitMQ重试机制进行消息补偿通知到此就结束了。感谢大家的阅读希望大家在评论区对此部分内容散发讨论便于学到更多的知识。