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

微信公众号h5网站开发施工单位招聘信息

微信公众号h5网站开发,施工单位招聘信息,免费开店铺,怎么提高网站的权重消息队列概念#xff1a;是在消息的传输过程中保存消息的容器。 作用#xff1a;异步处理、应用解耦、流量控制..... RabbitMQ#xff1a; SpringBoot继承RabbitMQ步骤#xff1a; 1.加入依赖 dependencygroupIdorg.springframework.boot/groupId是在消息的传输过程中保存消息的容器。 作用异步处理、应用解耦、流量控制..... RabbitMQ SpringBoot继承RabbitMQ步骤 1.加入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId/dependency 2.配置 spring:rabbitmq:host: 192.168.127.129virtual-host: / # 指定虚拟主机port: 5672 3.开启如果不需要监听消息也就是不消费就不需要该注解开启 EnableRabbit 4.创建队列、交换机、以及绑定它们之间的关系 Configuration public class MyMQConfig {/*** 创建队列* return*/Beanpublic Queue createQueue(){//String name, boolean durable, boolean exclusive, boolean autoDelete, Nullable MapString, Object argumentsQueue queue new Queue(order.queue,true,false,false);return queue;}/*** 创建交换机* return*/Beanpublic Exchange createExchange(){//因为这个交换机需要根据路由进行发送 所以使用TopicExchange//String name, boolean durable, boolean autoDelete, MapString, Object argumentsTopicExchange topicExchange new TopicExchange(order-event-exchange,true,false);return topicExchange;}/*** 通过路由绑定交换机和队列之间的关系* return*/Beanpublic Binding createBinding(){//String destination, Binding.DestinationType destinationType, String exchange, String routingKey, Nullable MapString, Object argumentsBinding binding new Binding(order.queue,Binding.DestinationType.QUEUE,order-event-exchange,order.route,null);return binding;}} 4.发送消息 AutowiredRabbitTemplate rabbitTemplate;ResponseBodyGetMapping(/sendmq)public String sendmq(){OrderEntity orderEntity new OrderEntity();orderEntity.setOrderSn(UUID.randomUUID().toString());//发送消息 String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor, Nullable CorrelationData correlationDatarabbitTemplate.convertAndSend(order-event-exchange,order.route,orderEntity);return ok;} 5.消费消息(监听消息) Component RabbitListener(queues create.queue) public class OrderCloseListener {RabbitHandlerpublic void orderClose(OrderEntity orderEntity, Message message, Channel channel) throws IOException {System.out.println(消费消息);} } 问题1以上消息发送和消费中如果传输的数据是java对象默认使用的jdk序列化机制我们经常需要使用json传递就需要修改传输格式json 修改方法如下: Configuration public class RabbitConfig {//发送消息为对象的时候 使用json的格式Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}} 问题2在消息的发送和消费还有消息储存过程中我们需要保证消息的可靠性避免消息的丢失保证业务数据的正确 1.消息储存使用持久化 1.消息发送开启消息投靠确认机制 spring:rabbitmq:host: 192.168.127.129virtual-host: / # 指定虚拟主机port: 5672 # publisher-confirms: truepublisher-confirm-type: simple # 开启生产者消息确认模式publisher-returns: true Configuration public class RabbitConfig {AutowiredRabbitTemplate rabbitTemplate;/*** 定制rabbitTemplate* 消息发送确认*/PostConstruct //表示RabbitConfig对象创建之后执行该方法public void initRabbitTemplate(){//消息成功发送到服务器之后的成功回调rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {/**** param correlationData 消息的唯一id* param b 消息是否成功* param s 消息失败的原因*/Overridepublic void confirm(CorrelationData correlationData, boolean b, String s) {System.out.println(confirmcorrelationData: correlationData ack: b);}});//消息发送到队列queue失败执行的回调rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {/**** param message 消息的内容* param i 回复的状态码* param s 回复的文本内容* param s1 那个交换机* param s2 那个路由key** 最常见的就是路由key不对*/Overridepublic void returnedMessage(Message message, int i, String s, String s1, String s2) {System.out.println(failmessage: message状态码i 错误提示 s 交换机s1 路由 s2);}});} } 异常操作之后可以达到消息发送端确认机制 3.消息消费端的确认机制 spring:rabbitmq:host: 192.168.127.129virtual-host: / # 指定虚拟主机port: 5672 # publisher-confirms: truepublisher-confirm-type: simple # 开启生产者消息确认模式publisher-returns: truetemplate:mandatory: truelistener:simple:acknowledge-mode: manual # 开启消费者 手动签收消息功能 Service RabbitListener(queues create.queue) public class OrderCloseListener {RabbitHandlerpublic void orderClose(OrderEntity orderEntity, Message message, Channel channel) throws IOException {System.out.println(消费消息。。。.);try{//业务逻辑//手动确认消息消费成功消息不在写人队列channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);}catch (Exception e){//消息消费失败业务失败将消息在次写到队列避免消息丢失channel.basicReject(message.getMessageProperties().getDeliveryTag(),true);}} } 通过以上消息的发送和消费端都确认之后我们消息一定的是可靠的。 案例 在实际的开发中我们经常会有取消订单的功能就可以使用消息队列延迟消费消息具体实现通过个死信队列把消息先放到死信队列当消息到期之后转到到期队列监听到期队列然后达到订单取消功能
http://www.w-s-a.com/news/659133/

相关文章:

  • 在吗做网站商城一个网站需要服务器吗
  • 先做网站再备案吗中山微网站建设报价
  • 树莓派可以做网站的服务器吗网站建设与设计ppt
  • 网站访问速度分析网站怎么做让PC和手机自动识别
  • 网站建设要考西宁网站建设多少钱
  • 网站开发公司东莞网站推广计划书具体包含哪些基本内容?
  • 素材天下网站惠州网站建设行业
  • 网站做a视频在线观看网站天津建站
  • 自己做的网站怎么链接火车头采集一个网站可以做几级链接
  • 济南网站制作哪家专业做网站怎样投放广告
  • 辽宁网站推广短视频运营培训学费多少
  • 拼多多网站怎么做翻译 插件 wordpress
  • 做网站运营的职业生涯规划wordpress分类显示图片
  • 网站建设与制作总结沈阳百度广告
  • 网站管理系统 手机会员制网站搭建wordpress
  • 做物品租赁网站清新wordpress主题
  • 优秀专题网站家居企业网站建设市场
  • 中山市有什么网站推广wordpress轻应用主机
  • 洗头竖鞋带名片改良授权做网站不贵整个世界
  • 设计电子商务网站建设方案微信如何开发自己的小程序
  • 建设网站公司哪里好相关的热搜问题解决方案做网站要看什么书
  • 网站建设重要性黄岐建网站
  • 做网站电销《电子商务网站建设》精品课
  • 地方商城网站海外网站推广方法
  • 乐山 网站建设安阳给商家做网站推广
  • 网站空间一般多大邢台网站建设有哪些
  • h5网站开发工具有哪些wordpress清空post表
  • 公司开网站干嘛怎么制作一个免费的网站模板
  • 群晖wordpress搭建网站网站建设及管理
  • 中山企业网站建设公司抖音代运营合作模式