CN116112880B - 基于mq的高并发短信发送方法和装置 - Google Patents
基于mq的高并发短信发送方法和装置 Download PDFInfo
- Publication number
- CN116112880B CN116112880B CN202211398065.7A CN202211398065A CN116112880B CN 116112880 B CN116112880 B CN 116112880B CN 202211398065 A CN202211398065 A CN 202211398065A CN 116112880 B CN116112880 B CN 116112880B
- Authority
- CN
- China
- Prior art keywords
- short message
- connection
- message
- channel
- sent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000000903 blocking effect Effects 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 14
- 239000000725 suspension Substances 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 8
- 238000005516 engineering process Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
- H04W4/14—Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Abstract
本申请公开了一种基于MQ的高并发短信发送方法和装置,本方法通过根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。本申请解决相关技术中短信消费时消费体容易丢失的技术问题,实现自动使消息体返回原队列,全程持久化,保证消息体被正确消费;任意单点故障都不会影响整个队列的操作,同时,系统吞吐量不再受到消息入队的影响。
Description
技术领域
本申请属于计算机技术领域,具体而言,涉及一种基于MQ的高并发短信发送方法和装置。
背景技术
由于运营商对每个短信通道都限制了流速,短信服务商在设计短信网关时需要要对通道单独设置队列处理,相互隔离。
目前主流的短信公司都是采用Redis作为通道队列。每个通道设计自己的队列,短信发送时,lpush入队,网关建立连接后使用brpop拉取短信。
因redis单线程模型,整体的生产和消费的tps(系统吞吐量)固定,生产和消费的tps会互相影响,当有大量短信发送时,redis会有大量数据入队,消息拉取的速度就会收到很大影响,容易导致消费体丢失。
针对相关技术中短信消费时消费体容易丢失的技术问题,目前尚未提出有效的解决方案。
发明内容
因此,本申请实施例在于提供一种基于MQ的高并发短信发送方法、装置、电子设备及存储介质,旨在解决上述现有技术存在的至少一个问题。
为实现上述目的,第一方面,本申请提供了一种基于MQ的高并发短信发送方法,包括:
根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。
在一个实施例中,所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停。
在一个实施例中,当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费。
在一个实施例中,当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费。
在一个实施例中,当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息。
在一个实施例中,当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。
在一个实施例中,在所述根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列之前,还包括:基于预设条件对所述待发送短信进行规则过滤,去除不符合发送条件的短信。
第二方面,本申请还提供了一种基于MQ的高并发短信发送装置,包括:
消息集建立模块,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
队列处理模块,用于根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
消息拉取模块,用于建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
发送模块,用于根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。
第三方面,本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述基于MQ的高并发短信发送方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述基于MQ的高并发短信发送方法的步骤。
本申请实施例提供的一种基于MQ的高并发短信发送方法、装置、电子设备及存储介质,通过根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。解决了相关技术中短信消费时消费体容易丢失的技术问题,实现了以下有益效果:当消费者消费失败时,会自动使消息体返回原队列,可实现可全程持久化,保证消息体被正确消费;任意单点故障都不会影响整个队列的操作,同时,系统吞吐量不再受到消息入队的影响。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的基于MQ的高并发短信发送方法的实现流程;
图2为本申请实施例提供的基于MQ的高并发短信发送方法的消费通道建立流程图;
图3为本申请实施例提供的基于MQ的高并发短信发送方法的短信消费流程图;
图4为本申请实施例提供的基于MQ的高并发短信发送装置的主要模块示意图;
图5为本申请实施例提供的可以应用于其中的示例性系统架构图;
图6为适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
另外,术语“多个”的含义应为两个以及两个以上。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本申请一个实施例提供的一种基于MQ的高并发短信发送方法的实现流程,为了便于说明,仅示出与本申请实施例相关的部分,详述如下:
一种基于MQ的高并发短信发送方法,包括以下步骤:
S101:根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
S102:根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
S103:建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
S104:根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。
在步骤S101中:根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者。通过预设的短信的通道和优先级建立对应的mq生产者和mq消费者,由此实现消费队列的优先消息优先消费,防止队列的阻塞。在这里,短信的通道和优先级为短信服务商在设计短信网关时进行配置。
需要说明的是,本公开实施例可应用于高并发短信发送队列设计的网关侧,短信服务商在设计短信网关时可以对短信的通道和优先级进行相应的配置。在分布式高并发条件下,本公开基于mq实现高速发送短信队列。例如,如图2为本申请实施例提供的基于MQ的高并发短信发送方法的消费通道建立流程图,可以根据短信服务商预设的短信的通道和优先级建立对应的topic(mq生产者和mq消费者对应的短信消息集),然后对网关进行相应的配置。当网关启动时,基于配置进行对应的消息消费。
在这里,MQ为消息队列,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
在步骤S102中:根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列。当有待发送短信生成时,可以根据待发送短信的短信类型和优先级,基于已经建立的mq生产者队列,将该待发送短信加入至对应的mq生产者队列,由此实现待发送短信的顺序消费,避免队列阻塞。
在这里,短信类型可以包括营销短信、行业短信、验证码短信等。
在一个实施例中,在所述根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列之前,还包括:基于预设条件对所述待发送短信进行规则过滤,去除不符合发送条件的短信。以此实现对不合规的短信进行过滤筛选,达到运营商系统风控要求。预设条件可以基于运营商的风控规则以及相关法律法规进行设置,通过关键词过滤方法或者关键词检索算法实现。
在步骤S103中:建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中。通过短信通道与运营商通道建立长连接实现短信的发送,当通道与运营商建立连接后需要进行登录成功才可以启动通道对于的mq消费者进行消息消费。在这里,当所述长连接登录成功后启动所述通道对应的mq消费者,同时保存所述长连接的连接状态至缓存中,以便于根据连接状态进行对应的消费动作执行。
在一个实施例中,所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停。在这里,连接状态代表了通道与运营商之间的连接状态,可以基于不同的连接状态进行不同的消息消费。
在步骤S104中:根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。在这里,预先对于通道和运营商的服务通道之间的不同连接状态设定了不同的处理规则。当通道和运营商服务端进行建立长连接后,根据在缓存中保存的长连接的连接状态根据预先设定好的处理规则进行短信消费,然后将待发送的短信提交至运营商服务端以完成短信的发送。
进一步的,当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费。对无锁阻塞队列的长度可以设置为5左右。
进一步的,当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费。即当通道断开连接时,先停止mq消费,待缓存数据消费完毕后,断开连接。
进一步的,当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息。
进一步的,当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。即当通道异常时,可以通过设置重连时间,进行尝试对通道的重新连接,当重新连接超时时,将停止mq消费,若重连成功,则再次启动对应的mq消费。
需要说明的是,当服务器版本发布升级导致短信服务商的停机时,将通过kill杀死服务,进程会先停止mq消费,待缓存数据消费完毕后,断开通道连接。
示例性的,如图3为本申请实施例提供的基于MQ的高并发短信发送方法的短信消费流程图。例如,某个待发送短信在发送之前,进行消息消息检验过滤处理,实现对不合规短信的过滤以符合运营商系统风控要求。过滤符合发送条件的待发送短信则入对应的topic。当网关启动时,网关发起对运营商的tcp(长连接)连接请求,与运营商建立长连接,当长连接登录成功后,启动对应通道的mq topic监听器,开始消费对应通道及其辅助通道的消息队列,将对应消费的消息储存在本地无锁阻塞队列,对应的发送handler从本地缓存队列中拉取消息发送,由此将待发送短信提交至运营商的服务端进行发送。当网关断开与运营商的连接后,待本地缓存中的队列消息消费完后,停止mq的消费。
由此,本申请实施例提供的基于MQ的高并发短信发送方法,通过根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。解决了相关技术中短信消费时消费体容易丢失的技术问题,实现了以下有益效果:当消费者消费失败时,会自动使消息体返回原队列,可实现可全程持久化,保证消息体被正确消费;任意单点故障都不会影响整个队列的操作,同时,系统吞吐量不再受到消息入队的影响。
图4示出了本申请实施例提供的基于MQ的高并发短信发送装置的主要模块示意图,为了便于说明,仅示出与本申请实施例相关的部分,详述如下:
一种基于MQ的高并发短信发送装置200,包括:
消息集建立模块201,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
队列处理模块202,用于根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
消息拉取模块203,用于建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
发送模块204,用于根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。
对于消息集建立模块201,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者。通过预设的短信的通道和优先级建立对应的mq生产者和mq消费者,由此实现消费队列的优先消息优先消费,防止队列的阻塞。在这里,短信的通道和优先级为短信服务商在设计短信网关时进行配置。
需要说明的是,本公开实施例可应用于高并发短信发送队列设计的网关侧,短信服务商在设计短信网关时可以对短信的通道和优先级进行相应的配置。在分布式高并发条件下,本公开基于mq实现高速发送短信队列。例如,如图2为本申请实施例提供的基于MQ的高并发短信发送方法的消费通道建立流程图,可以根据短信服务商预设的短信的通道和优先级建立对应的topic(mq生产者和mq消费者对应的短信消息集),然后对网关进行相应的配置。当网关启动时,基于配置进行对应的消息消费。
在这里,MQ为消息队列,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
对于队列处理模块202,用于根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列。当有待发送短信生成时,可以根据待发送短信的短信类型和优先级,基于已经建立的mq生产者队列,将该待发送短信加入至对应的mq生产者队列,由此实现待发送短信的顺序消费,避免队列阻塞。
在这里,短信类型可以包括营销短信、行业短信、验证码短信等。
在一个实施例中,在所述根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列之前,还包括:基于预设条件对所述待发送短信进行规则过滤,去除不符合发送条件的短信。以此实现对不合规的短信进行过滤筛选,达到运营商系统风控要求。预设条件可以基于运营商的风控规则以及相关法律法规进行设置,通过关键词过滤方法或者关键词检索算法实现。
对于消息拉取模块203,用于建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中。通过短信通道与运营商通道建立长连接实现短信的发送,当通道与运营商建立连接后需要进行登录成功才可以启动通道对于的mq消费者进行消息消费。在这里,当所述长连接登录成功后启动所述通道对应的mq消费者,同时保存所述长连接的连接状态至缓存中,以便于根据连接状态进行对应的消费动作执行。
在一个实施例中,所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停。在这里,连接状态代表了通道与运营商之间的连接状态,可以基于不同的连接状态进行不同的消息消费。
对于发送模块204,用于根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。在这里,预先对于通道和运营商的服务通道之间的不同连接状态设定了不同的处理规则。当通道和运营商服务端进行建立长连接后,根据在缓存中保存的长连接的连接状态根据预先设定好的处理规则进行短信消费,然后将待发送的短信提交至运营商服务端以完成短信的发送。
进一步的,当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费。对无锁阻塞队列的长度可以设置为5左右。
进一步的,当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费。即当通道断开连接时,先停止mq消费,待缓存数据消费完毕后,断开连接。
进一步的,当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息。
进一步的,当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。即当通道异常时,可以通过设置重连时间,进行尝试对通道的重新连接,当重新连接超时时,将停止mq消费,若重连成功,则再次启动对应的mq消费。
需要说明的是,当服务器版本发布升级导致短信服务商的停机时,将通过kill杀死服务,进程会先停止mq消费,待缓存数据消费完毕后,断开通道连接。
由此,本申请实施例提供的基于MQ的高并发短信发送装置,包括:消息集建立模块201,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;队列处理模块202,用于根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;消息拉取模块203,用于建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;发送模块204,用于根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送。解决了相关技术中短信消费时消费体容易丢失的技术问题,实现了以下有益效果:当消费者消费失败时,会自动使消息体返回原队列,可实现可全程持久化,保证消息体被正确消费;任意单点故障都不会影响整个队列的操作,同时,系统吞吐量不再受到消息入队的影响。
本申请实施例还提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本申请实施例的基于MQ的高并发短信发送方法。
本申请实施例还提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本申请实施例的基于MQ的高并发短信发送方法。
图5示出了可以应用本申请实施例的基于MQ的高并发短信发送方法或装置的示例性系统架构300。
如图5所示,系统架构300可以包括终端设备301、302、303,网络304和服务器305。网络304用以在终端设备301、302、303和服务器305之间提供通信链路的介质。网络304可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备301、302、303通过网络304与服务器305交互,以接收或发送消息等。终端设备301、302、303上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备301、302、303可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器305可以是提供各种服务的服务器,例如对用户利用终端设备301、302、303所发送的往来消息提供支持的后台管理服务器。后台管理服务器可以在接收到终端设备请求后进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本申请实施例所提供的基于MQ的高并发短信发送方法一般由终端设备301、302、303或服务器305执行,相应地,基于MQ的高并发短信发送装置一般设置于终端设备301、302、303或服务器305中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本申请实施例的电子设备的计算机系统400的结构示意图。图6示出的计算机系统仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本申请公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括确定模块、提取模块、训练模块和筛选模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,确定模块还可以被描述为“确定候选用户集的模块”。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (5)
1.一种基于MQ的高并发短信发送方法,其特征在于,包括:
根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送;
所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停;
当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费;
当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费;
当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息;
当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。
2.根据权利要求1所述的基于MQ的高并发短信发送方法,其特征在于,在所述根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列之前,还包括:基于预设条件对所述待发送短信进行规则过滤,去除不符合发送条件的短信。
3.一种基于MQ的高并发短信发送装置,其特征在于,包括:
消息集建立模块,用于根据预设的短信的通道和优先级建立对应的mq生产者和mq消费者;
队列处理模块,用于根据待发送短信的短信类型和优先级将所述待发送短信加入对应的mq生产者队列;
消息拉取模块,用于建立所述通道与运营商的长连接,当所述长连接登录成功后启动所述通道对应的mq消费者,并保存所述长连接的连接状态至缓存中;
发送模块,用于根据连接状态基于对应的预设规则进行短信消费,将待发送短信提交至运营商服务端以进行短信发送;
所述连接状态包括以下状态中的其中一个:连接成功、连接失败、连接暂停;
当所述连接状态为连接成功时,所述基于对应的预设规则进行短信消费包括:所述mq消费者将对应的mq生产者的消息拉取储存至本地无锁阻塞队列,从所述本地无锁阻塞队列中拉取消息进行短信消费;
当所述连接状态由连接成功变为连接断开时,待所述本地无锁阻塞队列中的消息拉取结束后,停止对应的所述mq消费者进行消息消费;
当所述连接状态为连接失败或连接暂停时,所述mq消费者不消费消息;
当所述连接状态为连接失败时,还包括:当有线程发起通道重连时,重新建立所述通道与运营商的长连接,当重新建立所述通道与运营商的长连接超过预设时间时,判定重连失败,停止该线程对应的mq消费者进行mq消费。
4.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至2中任一项所述的基于MQ的高并发短信发送方法的步骤。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至2中任一项所述的基于MQ的高并发短信发送方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211398065.7A CN116112880B (zh) | 2022-11-09 | 2022-11-09 | 基于mq的高并发短信发送方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211398065.7A CN116112880B (zh) | 2022-11-09 | 2022-11-09 | 基于mq的高并发短信发送方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116112880A CN116112880A (zh) | 2023-05-12 |
CN116112880B true CN116112880B (zh) | 2023-09-08 |
Family
ID=86264553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211398065.7A Active CN116112880B (zh) | 2022-11-09 | 2022-11-09 | 基于mq的高并发短信发送方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116112880B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
CN107396331A (zh) * | 2017-09-19 | 2017-11-24 | 马上消费金融股份有限公司 | 一种基于优先级队列的短信发送方法及装置 |
CN108200544A (zh) * | 2018-03-02 | 2018-06-22 | 北京国电通网络技术有限公司 | 短信下发方法和短信平台 |
CN110213429A (zh) * | 2018-09-06 | 2019-09-06 | 上海伴我科技有限公司 | 通信资源提供方法 |
CN114138506A (zh) * | 2021-11-08 | 2022-03-04 | 广州华多网络科技有限公司 | 消息队列调度方法及其装置、设备、介质、产品 |
CN114302351A (zh) * | 2022-03-09 | 2022-04-08 | 太平金融科技服务(上海)有限公司深圳分公司 | 短信业务处理方法、装置、计算机设备和存储介质 |
CN114637611A (zh) * | 2022-03-11 | 2022-06-17 | 平安国际智慧城市科技股份有限公司 | 基于消息队列的信息处理方法、装置及计算机设备 |
-
2022
- 2022-11-09 CN CN202211398065.7A patent/CN116112880B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9436532B1 (en) * | 2011-12-20 | 2016-09-06 | Emc Corporation | Method and system for implementing independent message queues by specific applications |
CN107396331A (zh) * | 2017-09-19 | 2017-11-24 | 马上消费金融股份有限公司 | 一种基于优先级队列的短信发送方法及装置 |
CN108200544A (zh) * | 2018-03-02 | 2018-06-22 | 北京国电通网络技术有限公司 | 短信下发方法和短信平台 |
CN110213429A (zh) * | 2018-09-06 | 2019-09-06 | 上海伴我科技有限公司 | 通信资源提供方法 |
CN114138506A (zh) * | 2021-11-08 | 2022-03-04 | 广州华多网络科技有限公司 | 消息队列调度方法及其装置、设备、介质、产品 |
CN114302351A (zh) * | 2022-03-09 | 2022-04-08 | 太平金融科技服务(上海)有限公司深圳分公司 | 短信业务处理方法、装置、计算机设备和存储介质 |
CN114637611A (zh) * | 2022-03-11 | 2022-06-17 | 平安国际智慧城市科技股份有限公司 | 基于消息队列的信息处理方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116112880A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109995801B (zh) | 一种消息传输方法和装置 | |
CN112445868B (zh) | 业务报文处理方法和装置 | |
CN111427701A (zh) | 一种工作流引擎系统和业务处理方法 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN112084042A (zh) | 一种消息处理的方法和装置 | |
US20210314414A1 (en) | Facilitating inter-proxy communication via an existing protocol | |
CN112486825B (zh) | 多泳道环境架构系统、消息消费方法、装置、设备及介质 | |
CN116112880B (zh) | 基于mq的高并发短信发送方法和装置 | |
CN111831503B (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN112948138A (zh) | 一种处理消息的方法和装置 | |
CN113595887B (zh) | 一种邮件系统中的流量控制方法和装置 | |
CN115600964A (zh) | 语音审批方法、装置及相关设备 | |
CN113765871B (zh) | 堡垒机管理的方法和装置 | |
CN113238808A (zh) | 一种消息推送方法和装置 | |
CN111580882A (zh) | 应用程序启动方法、装置、计算机系统和介质 | |
CN111193656A (zh) | 一种消息推送方法和装置 | |
CN109213815B (zh) | 控制执行次数的方法、装置、服务器终端以及可读介质 | |
CN112152915A (zh) | 消息转发网关系统和消息转发方法 | |
CN113778504B (zh) | 一种发布方法、发布系统及路由装置 | |
CN113572833B (zh) | 一种云手机的维护方法、装置、电子设备和存储介质 | |
CN113766437B (zh) | 一种短信发送方法和装置 | |
CN113132480B (zh) | 一种数据传输方法、装置和系统 | |
CN109992428B (zh) | 数据处理方法及系统 | |
CN112732417A (zh) | 一种处理应用请求的方法和装置 | |
CN110572331B (zh) | 消息处理方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A high concurrency SMS sending method and device based on MQ Granted publication date: 20230908 Pledgee: Shanghai Rural Commercial Bank Co.,Ltd. Songjiang sub branch Pledgor: Shanghai Chuangyan Yunzhi Information Technology Co.,Ltd. Registration number: Y2024310000254 |