>데이터 베이스 >MySQL 튜토리얼 >mysql模拟队列_MySQL

mysql模拟队列_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-01 13:34:451364검색

bitsCN.com

mysql模拟队列

 

Java代码  

-- 初始化数据  

DROP TABLE IF EXISTS t_msg_queues;  

CREATE TABLE t_msg_queues(  

    msg_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,  

    msg_content VARCHAR(255) NOT NULL,  

    owner_thread_id INT NOT NULL DEFAULT -1,  

    PRIMARY KEY (msg_id)  

)ENGINE=INNODB DEFAULT CHARSET=utf8;  

SET @maxRandom = POWER(10,6);  

INSERT INTO `t_msg_queues`(`msg_content`)   

VALUES (CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))  

    ,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))  

    ,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))  

    ,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))  

    ,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)))  

    ,(CONCAT("cont_",CEIL(RAND()*@maxRandom))),(CONCAT("cont_",CEIL(RAND()*@maxRandom)));  

      

-- 获取1条未处理的消息  

SET SESSION autocommit=1;  

SET @msgID = -1;  

UPDATE t_msg_queues SET owner_thread_id=GREATEST(CONNECTION_ID() ,(@msgID:=msg_id)*0)  

WHERE owner_thread_id=-1 ORDER BY msg_id LIMIT 1;  

-- 此时@msgID如果为-1,代表没有待处理的消息,否则就代表本次需要处理的msg_id  

 

bitsCN.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.