您现在的位置是:主页 > news > 网站开始是怎么做的/爱站关键词

网站开始是怎么做的/爱站关键词

admin2025/5/1 14:42:46news

简介网站开始是怎么做的,爱站关键词,青岛圭谷网站建设公司怎么样,产品设计的定义2019独角兽企业重金招聘Python工程师标准>>> 对于MQ的了解估计也仅限于安装了,有时候一遇到问题就摸不着头脑,当然主要是因为功力不够深啊。 当然,MQ堵的情况基本上都出现在爬虫跑了两三天之后,但是由于老的版本没有问…

网站开始是怎么做的,爱站关键词,青岛圭谷网站建设公司怎么样,产品设计的定义2019独角兽企业重金招聘Python工程师标准>>> 对于MQ的了解估计也仅限于安装了,有时候一遇到问题就摸不着头脑,当然主要是因为功力不够深啊。 当然,MQ堵的情况基本上都出现在爬虫跑了两三天之后,但是由于老的版本没有问…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

对于MQ的了解估计也仅限于安装了,有时候一遇到问题就摸不着头脑,当然主要是因为功力不够深啊。

         当然,MQ堵的情况基本上都出现在爬虫跑了两三天之后,但是由于老的版本没有问题,于是跟老的版本进行了个简单的比对,结果发现原来某个属性的值不同造成的。noAck为true和false的时候,我简单观察了下MQ的状态。比如:我发两百万的数据,noAck为true时,mq队列中的数据一会的就发送给了爬虫;而noAck 为false时,这些数据在MQ的队列中至少要存两小时,可以想象当数据量过大的时候,就会造成MQ队列中数据堆积的情况了。。。。

@Override

public void handleMessage(MessageHandler handler) throws Exception {

if (handler == null) {

return;

}

do {

Channel channel = connecter.getChannel();

if (channel == null) {

break;

}

try {

                                //此处再改回true,为false的情况会造成mq消息堆积,但是不影响抓取

boolean noAck = true; 

if (!noAck) {

channel.basicQos(100);

}

QueueingConsumer consumer = new QueueingConsumer(channel);

channel.basicConsume(connecter.getQueueName(), noAck, consumer);

for (; runFlag;) {

try {

QueueingConsumer.Delivery delivery = consumer.nextDelivery();

log.trace("get message from rabbitmq " );

if (delivery != null) {

handler.onMessage(delivery.getBody(), delivery.getEnvelope().getRoutingKey());

}

if (!noAck) {

channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);

}

delivery = null;

} catch (InterruptedException e) {

log.warn("RabbitMQMessageReceiver Thread " + Thread.currentThread().getId() + " occer exception : ", e);

}

}

} finally {

if (channel != null) {

channel.abort();

}

}

} while (runFlag);

}


转载于:https://my.oschina.net/u/2329222/blog/601406