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

怎么查网站注册时间合肥网络推广平台

怎么查网站注册时间,合肥网络推广平台,网站开发需求分析参考文献,济宁百度推广公司有几家消息队列概念&#xff1a;是在消息的传输过程中保存消息的容器。 作用&#xff1a;异步处理、应用解耦、流量控制..... RabbitMQ&#xff1a; SpringBoot继承RabbitMQ步骤&#xff1a; 1.加入依赖 <dependency><groupId>org.springframework.boot</groupId&g…

消息队列概念:是在消息的传输过程中保存消息的容器。

作用:异步处理、应用解耦、流量控制.....

RabbitMQ:

 

 

SpringBoot继承RabbitMQ步骤:

        1.加入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-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 Map<String, Object> argumentsQueue queue = new Queue("order.queue",true,false,false);return queue;}/*** 创建交换机* @return*/@Beanpublic Exchange createExchange(){//因为这个交换机需要根据路由进行发送  所以使用TopicExchange//String name, boolean durable, boolean autoDelete, Map<String, 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 Map<String, Object> argumentsBinding binding = new Binding("order.queue",Binding.DestinationType.QUEUE,"order-event-exchange","order.route",null);return binding;}}

        4.发送消息

    @AutowiredRabbitTemplate rabbitTemplate;@ResponseBody@GetMapping("/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("confirm===correlationData:"+ 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("fail====>message:"+ 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.hkea.cn/news/659732/

相关文章:

  • 开发区网站制作公司seo关键词有话要多少钱
  • 网站被篡改处理app拉新平台
  • 在线房屋设计网站seo推广平台服务
  • 电子政务门户网站建设代码短链接生成网址
  • 崔各庄地区网站建设百度非企渠道开户
  • 怎么用自己的电脑做网站服务器产品推广平台排行榜
  • 中国做的比较好的电商网站有哪些哈市今日头条最新
  • 微信怎么做网站推广百度网站优化培训
  • 网站开发支持多个币种电子技术培训机构
  • 移动网站设计与制作怎么找关键词
  • 国内移动端网站做的最好的厦门人才网597人才网
  • 建网站收费吗aso关键词覆盖优化
  • 西安的网站设计与制作首页微信视频号怎么推广引流
  • 顺义公司建站多少钱pc端百度
  • wordpress收费资源下载关键词优化的策略
  • 广州做网站建设的公司网站公司
  • 做网络平台的网站有哪些广州网站维护
  • 网页 代码怎么做网站东莞市民最新疫情
  • 电子商务网站设计中影响客户体验的元素有搜索引擎有哪些种类
  • 网站建设难点优化关键词技巧
  • 免费行情网站链接百度知道合伙人官网
  • 餐饮公司网站建设的特点大数据智能营销
  • 济南快速排名刷关键词排名seo软件
  • 系统做网站的地方百度推广登录后台登录入口
  • 集约化网站建设情况广告公司网站制作
  • 网站制作发票字节跳动广告代理商加盟
  • 义乌做网站武汉seo推广优化公司
  • 济宁哪家网站建设公司正规谷歌浏览器 免费下载
  • 有没有女的做任务的网站广东省新闻
  • seo长尾关键词优化如何做网站推广优化