外贸网站建设服务器,wordpress全静态化,企业网站建设一条龙服务内容,wordpress 用户角色#x1f9d1;#x1f4bb;作者名称#xff1a;DaenCode #x1f3a4;作者简介#xff1a;啥技术都喜欢捣鼓捣鼓#xff0c;喜欢分享技术、经验、生活。 #x1f60e;人生感悟#xff1a;尝尽人生百味#xff0c;方知世间冷暖。 文章目录 #x1f31f;架构图#x… 作者名称DaenCode 作者简介啥技术都喜欢捣鼓捣鼓喜欢分享技术、经验、生活。 人生感悟尝尽人生百味方知世间冷暖。 文章目录 架构图application.yml文件RabbitMQ配置消息发送、消费写在最后 架构图
死信队列架构图 本地消息表
application.yml文件
mqconfig:#延迟队列不能被监听消费stock_release_delay_queue: stock.release.delay.queue#延迟队列的消息过期后转发的队列stock_release_queue: stock.release.queue#交换机stock_event_exchange: stock.event.exchange#进入延迟队列的路由keystock_release_delay_routing_key: stock.release.delay.routing.key#消息过期进入释放队列的keystock_release_routing_key: stock.release.routing.key#消息过期时间,毫秒,测试改为15秒ttl: 360000RabbitMQ配置
Configuration
Data
public class RabbitMQConfig {/*** 交换机*/Value(${mqconfig.stock_event_exchange})private String eventExchange;/*** 第一个队列延迟队列*/Value(${mqconfig.stock_release_delay_queue})private String stockReleaseDelayQueue;/*** 第一个队列的路由key* 进入队列的路由key*/Value(${mqconfig.stock_release_delay_routing_key})private String stockReleaseDelayRoutingKey;/*** 第二个队列被监听恢复库存的队列*/Value(${mqconfig.stock_release_queue})private String stockReleaseQueue;/*** 第二个队列的路由key** 即进入死信队列的路由key*/Value(${mqconfig.stock_release_routing_key})private String stockReleaseRoutingKey;/*** 过期时间*/Value(${mqconfig.ttl})private Integer ttl;/*** 消息转换器* return*/Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}/*** 创建topic交换机* 一个微服务一个交换机* return*/Beanpublic Exchange stockEventExchange(){return new TopicExchange(eventExchange,true,false);}/*** 延迟队列* return*/Beanpublic Queue stockReleaseDelayQueue(){MapString,Object argsnew HashMap();args.put(x-message-ttl,ttl);args.put(x-dead-letter-routing-key,stockReleaseRoutingKey);args.put(x-dead-letter-exchange,eventExchange);return new Queue(stockReleaseDelayQueue,true,false,false,args);}/*** 死信队列用于被监听*/Beanpublic Queue stockReleaseQueue(){return new Queue(stockReleaseQueue,true,false,false);}/*** 死信队列绑定关系* return*/Beanpublic Binding stockReleaseBinding(){return new Binding(stockReleaseQueue,Binding.DestinationType.QUEUE,eventExchange,stockReleaseRoutingKey,null);}/*** 延迟队列绑定关系* return*/Beanpublic Binding stockReleaseDelayBinding(){return new Binding(stockReleaseDelayQueue,Binding.DestinationType.QUEUE,eventExchange,stockReleaseDelayRoutingKey,null);}
}消息发送、消费
接受到订单服务大哥锁定库存请求时进行锁定库存消息的发送。发送消息的同时在本地消息表插入记录。消息消费时找订单服务大哥查询订单状态即可。根据订单状态进行后续处理。
写在最后
RabbitMQ项目实战之死信队列应用到此就结束啦感谢大家的阅读欢迎大家在评论区进行交流。