这样的业务逻辑设计是否合理?
表A是待发短信数据表(每秒大概新增30条短信记录),有10个短信发送通道(由COM+接口提供)
现在要求:及时将表A中短信发送出去,10个通道轮流发送,发送成功后删除表A中对应的记录。
业务逻辑设计:
WINFORM 每秒 SELECT 表A一次,取出记录循环发送,送给10个通道中发送数最少的通道,完成发送。
总感觉这样发送效率不高,10个通道没有完全利用起来,每秒SELECT表一次效率低。
于是又想到另外一个设计:
WINFROM 开启10个线程,每个线程每秒一次去表中 SELECT记录、发送、删除,但又害怕10个线程会SELECT到同一条记录造成冲突。
有什么更好的业务逻辑吗?