当前位置: 首页 > wzjs >正文

网站安装php2022年必火的创业项目加盟

网站安装php,2022年必火的创业项目加盟,做企业官网费用,wordpress id重置密码忘记在使用 RabbitMQ 时,手动确认消息和死信队列是两个常见的需求。下面是一个使用 Spring Boot 的示例,展示如何手动确认消息以及如何使用死信队列。 1. 手动确认消息 在 RabbitMQ 中,默认情况下,消息是自动确认的。为了手动确认消…

在使用 RabbitMQ 时,手动确认消息和死信队列是两个常见的需求。下面是一个使用 Spring Boot 的示例,展示如何手动确认消息以及如何使用死信队列。

1. 手动确认消息

在 RabbitMQ 中,默认情况下,消息是自动确认的。为了手动确认消息,我们需要将 acknowledge-mode 设置为 manual,并在消费者中手动调用 basicAckbasicNack

1.1 配置

首先,在 application.yml 中配置 RabbitMQ:

spring:rabbitmq:host: localhostport: 5672username: guestpassword: guestlistener:simple:acknowledge-mode: manual
1.2 消费者

接下来,创建一个消费者类,手动确认消息:

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;import java.io.IOException;@Component
public class RabbitMQConsumer {@RabbitListener(queues = "myQueue")public void receiveMessage(Message message, Channel channel) throws IOException {try {// 处理消息String body = new String(message.getBody());System.out.println("Received message: " + body);// 手动确认消息channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);} catch (Exception e) {// 处理异常,拒绝消息并重新入队channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);}}
}

2. 死信队列

死信队列(Dead Letter Queue, DLQ)用于处理无法被正常消费的消息。当消息被拒绝、过期或队列达到最大长度时,消息会被路由到死信队列。

2.1 配置死信队列

首先,配置一个普通队列和一个死信队列:

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {// 普通队列@Beanpublic Queue myQueue() {return QueueBuilder.durable("myQueue").withArgument("x-dead-letter-exchange", "dlxExchange") // 死信交换机.withArgument("x-dead-letter-routing-key", "dlxQueue") // 死信路由键.build();}// 死信队列@Beanpublic Queue dlxQueue() {return QueueBuilder.durable("dlxQueue").build();}// 普通交换机@Beanpublic DirectExchange myExchange() {return new DirectExchange("myExchange");}// 死信交换机@Beanpublic DirectExchange dlxExchange() {return new DirectExchange("dlxExchange");}// 绑定普通队列到普通交换机@Beanpublic Binding binding() {return BindingBuilder.bind(myQueue()).to(myExchange()).with("myRoutingKey");}// 绑定死信队列到死信交换机@Beanpublic Binding dlxBinding() {return BindingBuilder.bind(dlxQueue()).to(dlxExchange()).with("dlxQueue");}
}
2.2 消费者处理死信队列

创建一个消费者来处理死信队列中的消息:

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;import java.io.IOException;@Component
public class DLQConsumer {@RabbitListener(queues = "dlxQueue")public void handleDeadLetterMessage(Message message, Channel channel) throws IOException {String body = new String(message.getBody());System.out.println("Received dead letter message: " + body);// 手动确认死信消息channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);}
}

3. 测试

你可以通过发送消息到 myQueue 并手动拒绝消息来测试死信队列的功能。被拒绝的消息会被路由到 dlxQueue,并由 DLQConsumer 处理。

4. 总结

  • 手动确认消息:通过设置 acknowledge-modemanual,并在消费者中手动调用 basicAckbasicNack 来确认或拒绝消息。
  • 死信队列:通过配置 x-dead-letter-exchangex-dead-letter-routing-key,将无法处理的消息路由到死信队列。

通过这种方式,你可以更好地控制消息的处理流程,并确保不会丢失重要的消息。


文章转载自:

http://EKwGeCcS.wkxsy.cn
http://vJQKIjwi.wkxsy.cn
http://ScRKPISq.wkxsy.cn
http://iyahEKWe.wkxsy.cn
http://bnoOVmRm.wkxsy.cn
http://vqvnRSTI.wkxsy.cn
http://ZZBLwQN5.wkxsy.cn
http://eHcGXNWJ.wkxsy.cn
http://qvbIQhff.wkxsy.cn
http://zphmlxPM.wkxsy.cn
http://53zACyy6.wkxsy.cn
http://KgsKtPL2.wkxsy.cn
http://u0ht8VjB.wkxsy.cn
http://VTFm63hq.wkxsy.cn
http://kxwPVxhz.wkxsy.cn
http://I5CXJu20.wkxsy.cn
http://VnDW51xi.wkxsy.cn
http://NroxX1Nz.wkxsy.cn
http://Z3wmeV2R.wkxsy.cn
http://a2yHHeCe.wkxsy.cn
http://Rfyplyp2.wkxsy.cn
http://oAE3q1D5.wkxsy.cn
http://sUljzlTl.wkxsy.cn
http://dKU4P3kZ.wkxsy.cn
http://C1L5sKcD.wkxsy.cn
http://EHwtibjy.wkxsy.cn
http://8Wr67SWT.wkxsy.cn
http://vFPelOXk.wkxsy.cn
http://c0vMmKuv.wkxsy.cn
http://U9KqufMt.wkxsy.cn
http://www.dtcms.com/wzjs/720703.html

相关文章:

  • wordpress 建站赚钱东平县建设局信息网站
  • 医疗网站建设中心广州网站建设推荐乐云seo
  • 怎么做网站的百度收录用php做网站用到的工具
  • 长治网站制作小程序效果最好h5制作软件
  • 网站正在建设中怎么办男生女生做羞羞事的网站
  • 手机网站开发解决方案hello md5 wordpress
  • 互联网营销公司有哪些那些网站用不着做优化
  • 临沂怎么做网站网站搭建和网页设计
  • 九歌人工智能诗歌写作网站免费开源的企业建站系统
  • 做养生的网站多吗雅淇wordpress
  • 网站开发工程师年度总结网站默认首页文件顺序
  • 网站后台策划书东莞全网推广
  • 上海公司网站备案外贸自建站多少钱一个
  • 佛山网站设计专业网页设计基础试题及答案
  • 郑州营销型网站建设价格WordPress导入hexo
  • 网站开发语言排行wordpress 禁止twitter
  • 做网站开麻烦吗网站功能结构图 怎么做
  • 广州微信网站建设价格wordpress 后台500
  • 剪辑素材网站aspnet东莞网站建设
  • 网站建设所需要的东西如何免费建网站
  • 北京网站建设石榴汇电子商务公司是做什么的
  • 企业网站怎么做的更好天津高端网站定制
  • 丽江旅游网站建设网站开发岗位介绍
  • 微信小程序开发哪个好广安seo优化
  • 会唐网做网站网站开发基础教程
  • 建设宣传家乡的网站桥头网站建设公司
  • 什么网站可以免费做宣传wordpress基本功能
  • 自己做网站百度能收录码做网站制作软件
  • 定制网站建设云南微网站制作哪家好
  • 唐山网站制作专业中文域名注册官网入口