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

爬取漫画数据做网站seon是什么意思

爬取漫画数据做网站,seon是什么意思,做rap的网站,南宁快速网站建设电话本文章通过MQ队列来实现秒杀场景 整体的设计如下图#xff0c;整个流程中对于发送发MQ失败和发送到死信队列的数据未做后续处理 1、首先先创建MQ的配置文件 Configuration public class RabbitConfig {public static final String DEAD_LETTER_EXCHANGE deadLetterE…本文章通过MQ队列来实现秒杀场景 整体的设计如下图整个流程中对于发送发MQ失败和发送到死信队列的数据未做后续处理 1、首先先创建MQ的配置文件 Configuration public class RabbitConfig {public static final String DEAD_LETTER_EXCHANGE deadLetterExchange;public static final String DEAD_LETTER_QUEUEA_ROUTING_KEY dead.#;public static final String DEAD_LETTER_QUEUEA_NAME deadQueue;Autowiredprivate RabbitTemplate rabbitTemplate;Autowiredprivate ConnectionFactory connectionFactory;Beanpublic TopicExchange topicExchange(){return new TopicExchange(seckill_topic,true,false);}// 声明死信ExchangeBean(deadLetterExchange)public DirectExchange deadLetterExchange(){return new DirectExchange(DEAD_LETTER_EXCHANGE);}Bean(seckillQueue)public Queue seckillQueue(){MapString,Object args new HashMap();args.put(x-dead-letter-exchange, DEAD_LETTER_EXCHANGE);// x-dead-letter-routing-key 这里声明当前队列的死信路由keyargs.put(x-dead-letter-routing-key, DEAD_LETTER_QUEUEA_ROUTING_KEY);return QueueBuilder.durable(seckillQueue).withArguments(args).build();}Bean(deadQueue)public Queue binding(){return new Queue(DEAD_LETTER_QUEUEA_NAME);}Beanpublic Binding bindingExchange(){return BindingBuilder.bind(seckillQueue()).to(topicExchange()).with(seckill.#);}// 声明死信队列绑定关系Beanpublic Binding deadLetterBinding(Qualifier(deadQueue) Queue queue,Qualifier(deadLetterExchange) DirectExchange exchange){return BindingBuilder.bind(queue).to(exchange).with(DEAD_LETTER_QUEUEA_ROUTING_KEY);}//配置会覆盖yml的重试次数//RabbitMQ监听容器/*Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory){SimpleRabbitListenerContainerFactory factory new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);//设置并发factory.setConcurrentConsumers(1);SimpleMessageListenerContainer snew SimpleMessageListenerContainer();//最大并发factory.setMaxConcurrentConsumers(1);//消息接收——手动确认factory.setAcknowledgeMode(AcknowledgeMode.AUTO);//设置超时factory.setReceiveTimeout(2000L);//设置重试间隔factory.setFailedDeclarationRetryInterval(3000L);//监听自定义格式转换//factory.setMessageConverter(jsonMessageConverter);return factory;}*/ } 2、配置yml文件 spring:redis:database: 0host: xxxport: 6379password: xxxtimeout: 60jedis:pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0rabbitmq:username: adminpassword: adminvirtual-host: /host: xxxxport: 12345publisher-confirms: truepublisher-returns: truetemplate:mandatory: truelistener:simple:concurrency: 1max-concurrency: 3# 消费者预取1条数据到内存默认为250条prefetch: 1# 确定机制acknowledge-mode: manualretry:enabled: true #是否支持重试max-attempts: 2# 重试间隔(ms)initial-interval: 5000 这里有一点需要注意的是在做死信队列的时候如果Config文件中配置了监听容器在yml文件中的一些属性要在容器里面进行配置当时测试重试的时候发现没有在Config文件中配置只在yml文件中配置了重试次数结果会无限期的重试MQ的默认方式就是无限期的重试所以这点很容易踩坑 3、实现交换机的ACK实现 RabbitTemplate.ConfirmCallback接口 Component public class ConfirmCallBackHandler implements RabbitTemplate.ConfirmCallback {Autowiredprivate RabbitMessageMapper rabbitMessageMapper;Autowiredprivate RabbitTemplate rabbitTemplate;//注入//PostConstruct注解会在Component、Autowired注解完成后再执行PostConstructpublic void init(){rabbitTemplate.setConfirmCallback(this);}Overridepublic void confirm(CorrelationData correlationData, boolean ack, String cause) {if(!ack){RabbitMessage rabbitMessage new RabbitMessage();rabbitMessage.setUniqueKey(correlationData.getId().toString());rabbitMessage.setSuccessFlag(N);rabbitMessageMapper.updateSuccessFlag(rabbitMessage);System.out.println(失败原因cause);}} } 4、实现队列的ACK实现 RabbitTemplate.ReturnCallback Component public class ReturnCallBackHandler implements RabbitTemplate.ReturnCallback {Autowiredprivate RabbitTemplate rabbitTemplate;//注入//PostConstruct注解会在Component、Autowired注解完成后再执行PostConstructpublic void init(){rabbitTemplate.setReturnCallback(this);}Overridepublic void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {System.out.println(消息主体 messagemessage);System.out.println(应答码 replyCode: replyCode);System.out.println(原因描述 replyTextreplyText);System.out.println(交换机 exchangeexchange);System.out.println(消息使用的路由键 routingKeyroutingKey);} } 5、消费者方面实现 ChannelAwareMessageListener 接口 Component public class AckListener implements ChannelAwareMessageListener {Autowiredprivate RabbitMqService rabbitMqService;RabbitListener(queues seckillQueue)Overridepublic void onMessage(Message messagex, Channel channel) throws Exception {try {String result new String(messagex.getBody(),utf-8);rabbitMqService.receive(result);channel.basicAck(messagex.getMessageProperties().getDeliveryTag(), false);}catch (Exception exception){channel.basicNack(messagex.getMessageProperties().getDeliveryTag(), false, false);}} }
http://wiki.neutronadmin.com/news/336216/

相关文章:

  • 郑州网站建设e橙网熊掌号集团网站风格
  • 做网站送的小程序有什么用如何在网站找做贸易的客户
  • 哪种网站语言最好北京微信网站开发费用
  • 广州网站建设找哪家企业网络推广计划书
  • 对运营网站有什么见解网站建设前的ER图
  • 建设网站需要备案么网站建设大德通众包
  • 公司网站建设中恒建设集团有限公司北京商场租金
  • 太原市建设北路小学网站360免费建站391199
  • 雅思培训恩施seo
  • 购物网站开发技术网页设计与制作教程书电子版
  • 快速的网站开发网站托管费用多少
  • 淄博网站排名优化报价口腔医院网站优化服务商
  • 网站网页访问权限自己怎么设计公众号
  • 邢台宇鹏网站建设网店推广策划
  • 为啥浏览做的网站有移动条wordpress 标签前缀
  • 浏览网站 需要我安装wordpress贵阳网站seo外包
  • 生活服务网站建设网站多语言切换
  • 航佳网站建设做项目的招聘网站
  • 做关键词排名卖网站官方正版浏览器
  • 同城换物网站为什么做不起来想学电商去哪学
  • 做竞价网站需要什么样的空间稳定的网站建设
  • 南通网站建设seowordpress添加前台漂亮注册页面
  • 安徽建设厅网站节能北备案昆明网站建设价目表
  • 网站建设时 网站信息可以边建设边组织建设网点查询
  • 高大上的自助建站网站网站主服务器所在地地址
  • 在线网站域名whois查询工具济南企业网站开发
  • 网站举报中心官网公司网站开发立项文档
  • 网站建设开票税率在百度上注册公司网站要多少钱
  • 怎样做优惠券网站高德地图实况街景怎么打开
  • 有口碑的顺德网站建设有创意的网页