CN112612619B - 一种大附件邮件的多线程并发处理方法及装置 - Google Patents

一种大附件邮件的多线程并发处理方法及装置 Download PDF

Info

Publication number
CN112612619B
CN112612619B CN202011299553.3A CN202011299553A CN112612619B CN 112612619 B CN112612619 B CN 112612619B CN 202011299553 A CN202011299553 A CN 202011299553A CN 112612619 B CN112612619 B CN 112612619B
Authority
CN
China
Prior art keywords
mail
information
file
thread
temporary file
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
Application number
CN202011299553.3A
Other languages
English (en)
Other versions
CN112612619A (zh
Inventor
卞海文
赵晶
王志海
喻波
韩振国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Wondersoft Technology Co Ltd
Original Assignee
Beijing Wondersoft Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Wondersoft Technology Co Ltd filed Critical Beijing Wondersoft Technology Co Ltd
Priority to CN202011299553.3A priority Critical patent/CN112612619B/zh
Publication of CN112612619A publication Critical patent/CN112612619A/zh
Application granted granted Critical
Publication of CN112612619B publication Critical patent/CN112612619B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种大附件邮件的多线程并发处理方法及装置,所述方法包括:将邮件信息传递到stmp‑filter进程;将邮件信息的头信息传输给Linux的消息队列;将邮件信息的头信息存储到Redis和第一阻塞队列中;File‑Process设置临界值,监控分配的内存资源的占用情况;将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;从所述第二阻塞队列中获取邮件信息,TikaParser线程从第一阻塞队列中获取邮件的附件文件,由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程,并按预设策略处理解析过程中产生的临时文件。

Description

一种大附件邮件的多线程并发处理方法及装置
技术领域
本发明涉及文件处理领域,尤其涉及一种大附件邮件的多线程并发处理方法及装置。
背景技术
为了防止数据泄密,企业发送邮件时会对邮件进行加解密操作。由邮件服务器解析外发邮件是否符合公司保密规则,解析邮件时,会涉及到对文件的读写操作。当单位时间内邮件的发送量较大,且邮件的附件较大时,容易形成阻塞。为了提高邮件解析的速度,会采取将解析时生成的临时文件放入内存的手段,但这样会占用大量内存。当邮件服务器内存不足时,系统的性能会显著降低。
因此,需要对邮件解析的方法进行改进。
发明内容
为解决上述技术问题,本发明提出了一种大附件邮件的多线程并发处理方法及装置,所述方法及装置,用以解决现有技术中邮件附件过大或邮件并发量过大时,造成邮件解析服务器内存资源耗尽导致崩溃的问题。
根据本发明的第一方面,提供一种大附件邮件的多线程并发处理方法,所述方法包括以下步骤:
步骤S1001:Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
步骤S1002:所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
步骤S1003:File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
步骤S1004:File-Process进程设置服务器资源的临界值;
步骤S1005:File-Process监控内存资源和虚拟磁盘占用情况;
步骤S1006:判断分配的内存资源是否达到临界值;若是,进入步骤S1007;若否,进入步骤S1008;
步骤S1007:ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听,监听一预设时长后,进入步骤S105;
步骤S1008:MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
步骤S1009:ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
步骤S1010:按预设策略处理解析过程中产生的临时文件。
进一步地,所述File-Process进程在启动时即开启监控分配的内存资源占用情况的功能。
进一步地,所述步骤S1010:按预设策略处理解析过程中产生的临时文件,包括:对于符合规则可以立即删除的临时文件,立即删除该临时文件;对于不能立即删除的临时文件,设置定时器,到达时间时删除该临时文件。
进一步地,通过File-Process对内存的监控,控制邮件的解析速率。
根据本发明第二方面,提供一种大附件邮件的多线程并发处理装置,所述装置包括:
邮件传送模块:配置为Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
第一存储模块:配置为所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
第二存储模块:配置为File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
设置模块:配置为File-Process进程设置服务器资源的临界值;
监控模块:配置为File-Process监控内存资源和虚拟磁盘占用情况;
判断模块:配置为判断分配的内存资源是否达到临界值;
控制模块:配置为ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听;
第一处理模块:配置为MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
解析模块:配置为ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
临时文件处理模块:配置为按预设策略处理解析过程中产生的临时文件。
进一步地,所述File-Process进程在启动时即开启监控分配的内存资源占用情况的功能。
进一步地,所述临时文件处理模块,还对于符合规则可以立即删除的临时文件,立即删除该临时文件;对于不能立即删除的临时文件,设置定时器,到达时间时删除该临时文件。
进一步地,通过File-Process对内存的监控,控制邮件的解析速率。
根据本发明第三方面,提供一种大附件邮件的多线程并发处理系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的一种大附件邮件的多线程并发处理方法。
根据本发明第四方面,提供一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的一种大附件邮件的多线程并发处理方法。
根据本发明的上述方案,通过Java LinkedBlockingDeque阻塞队列,以及Redis存储接收到的邮件信息,搭配ThreadPoolTaskExecutor线程池,由多线程解析文件。在解析过程中实时监控系统的内存信息,控制接收信息速度,为进程运行留下足够的内存,从而保证邮件解析系统能够高效、稳定地运行。解决了邮件解析的过程中,邮件附件过大或同时并发的邮件的发送量很高时,邮件解析性能下降的问题。本申请在邮件检测服务器由多线程解析邮件,实时监控内存资源,并根据内存占用的情况,控制临时文件的生成速度,从而达到邮件解析的稳定、高效。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:
图1为本发明一个实施方式的大附件邮件的多线程并发处理方法流程图;
图2为本发明一个实施方式的用于实现大附件邮件的多线程并发处理方法的交互图;
图3为本发明一个实施方式的用以实现大附件邮件的多线程并发处理方法的架构图;
图4为本发明一个实施方式的大附件邮件的多线程并发处理装置结构框图。
具体实施方式
定义:
LinkedBlockingDeque:LinkedBlockingDeque是Java中的一个多线程双头队列,实现了BlockingDeque接口,可以同时在队列的两头put、take元素。LinkedBlockingDeque提供了多种入队操作的实现来满足不同情况下的需求,例如:add、offer、put,offer入队利用了Condition的awaitNanos进行超时等待;put入队lock加锁后一直阻塞等待,直到元素插入到队列中。LinkedBlockingDeque还提供了多种出队操作的实现来满足不同情况的需求,例如:remove、poll、take等。poll的超时方法也是利用了Condition的awaitNanos来做超时等待;take利用lock加锁,由while循环重试移除,await阻塞等待。
Redis:是遵守BSD协议的开源的、高性能的key-value数据库。Redis与其他key-value缓存产品相比有以下三个特点:1、支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载并使用;2、不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储;3、支持数据的备份,即master-slave模式的数据备份。Redis性能极高,读的速度是110000次/s,写的速度是81000次/s。所有的操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。Redis还支持publish/subscribe、通知、key过期等特性。
本申请中,所述大附件邮件是指文件大小超过预设阈值的邮件附件。
首先结合图1说明为本发明一个实施方式的大附件邮件的多线程并发处理方法流程图。如图1所示,所述方法包括以下步骤:
步骤S1001:Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
步骤S1002:所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
步骤S1003:File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
步骤S1004:File-Process进程设置服务器资源的临界值;
步骤S1005:File-Process监控内存资源和虚拟磁盘占用情况;
步骤S1006:判断分配的内存资源是否达到临界值;若是,进入步骤S1007;若否,进入步骤S1008;
步骤S1007:ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听,监听一预设时长后,进入步骤S105;
步骤S1008:MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
步骤S1009:ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
步骤S1010:按预设策略处理解析过程中产生的临时文件。
所述File-Process进程在启动时即开启监控分配的内存资源占用情况的功能。
所述步骤S1005:File-Process监控内存资源和虚拟磁盘占用情况,其中:
由于File-Process解析的邮件附件较大时,对内存占用很高,虚拟磁盘也很容易被占满,导致进程无法正常解析文件,所以要时刻监控内存资源和虚拟磁盘占用情况。
所述步骤S1007:ReceiverFromSmtp线程池中的线程暂停获取邮件信息,其中,
ReceiverFromSmtp线程池中的线程暂停获取邮件信息,防止内存占用过高导致应用崩溃。
所述步骤S1008中的临时文件信息包括邮件信息保存路径,解析后的邮件正文和附件信息。
所述步骤S1009:TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,所述相关信息包括但不限于路径、密级和文件类型。
其中,LinkedBlockingQueue是线程安全的,不用担心多线程操作导致任务冲突。
本实施例中,通过ReceiverFromSmtp线程池中的线程暂停获取邮件信息,从而控制后续邮件的处理,避免造成Postfix邮件服务器内存耗用过大。
所述步骤S1010:按预设策略处理解析过程中产生的临时文件,包括:为防止机械硬盘过度读写,将临时文件都存储到虚拟磁盘中,并及时处理不需要的文件。对于符合规则可以立即删除的临时文件,立即删除该临时文件;对于不能立即删除的临时文件,设置定时器,到达时间时删除该临时文件。
还可以通过File-Process对内存的监控,控制邮件的解析速率,达到减轻Postfix邮件服务器内存压力的目的。
图2为本申请一个实施方式的用于实现大附件邮件的多线程并发处理方法的交互图。
以下结合图3说明本申请用以实现大附件邮件的多线程并发处理方法的一个实施例。
该实施例为企业的内部邮件外发时,在邮件检测服务器中进行检测的信息传递方式。在客户端发送大批量的大附件邮件时,可以实现邮件的高效解析和检测。
本发明实施例进一步给出一种大附件邮件的多线程并发处理装置,如图4所示,所述装置包括:
邮件传送模块:配置为Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
第一存储模块:配置为所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
第二存储模块:配置为File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
设置模块:配置为File-Process进程设置服务器资源的临界值;
监控模块:配置为File-Process监控内存资源和虚拟磁盘占用情况;
判断模块:配置为判断分配的内存资源是否达到临界值;
控制模块:配置为ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听;
第一处理模块:配置为MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
解析模块:配置为ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
临时文件处理模块:配置为按预设策略处理解析过程中产生的临时文件。
本发明实施例进一步给出一种大附件邮件的多线程并发处理系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的一种大附件邮件的多线程并发处理方法。
本发明实施例进一步给出一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的大附件邮件的多线程并发处理方法。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装Windows或者Windows Server操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (10)

1.一种大附件邮件的多线程并发处理方法,其特征在于,包括以下步骤:
步骤S1001:Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
步骤S1002:所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
步骤S1003:File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
步骤S1004:File-Process进程设置服务器资源的临界值;
步骤S1005:File-Process监控内存资源和虚拟磁盘占用情况;
步骤S1006:判断分配的内存资源是否达到临界值;若是,进入步骤S1007;若否,进入步骤S1008;
步骤S1007:ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听,监听一预设时长后,进入步骤S1005;
步骤S1008:MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
步骤S1009:ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
步骤S1010:按预设策略处理解析过程中产生的临时文件。
2.如权利要求1所述的大附件邮件的多线程并发处理方法,其特征在于,所述File-Process进程在启动时即开启监控分配的内存资源占用情况的功能。
3.如权利要求1所述的大附件邮件的多线程并发处理方法,其特征在于,所述步骤S1010:按预设策略处理解析过程中产生的临时文件,包括:对于符合规则可以立即删除的临时文件,立即删除该临时文件;对于不能立即删除的临时文件,设置定时器,到达时间时删除该临时文件。
4.如权利要求1所述的大附件邮件的多线程并发处理方法,其特征在于,通过File-Process对内存的监控,控制邮件的解析速率。
5.一种大附件邮件的多线程并发处理装置,其特征在于,所述装置包括:
邮件传送模块:配置为Postfix邮件服务器接收到邮件后,将邮件信息传递到stmp-filter进程;
第一存储模块:配置为所述stmp-filter进程将邮件信息的头信息传输给Linux的消息队列,将邮件及其包含的附件文件转为base64编码文件并存放到虚拟磁盘上;
第二存储模块:配置为File-Process进程的线程池执行ReceiverFromSmtp线程,多个ReceiverFromSmtp线程依次从所述Linux的消息队列中获取邮件信息的头信息,并将所述邮件信息的头信息存储到Redis和第一阻塞队列中,为防止多个ReceiverFromSmtp线程对Redis写入信息时有冲突,需要对Redis进行加锁操作;
设置模块:配置为File-Process进程设置服务器资源的临界值;
监控模块:配置为File-Process监控内存资源和虚拟磁盘占用情况;
判断模块:配置为判断分配的内存资源是否达到临界值;
控制模块:配置为ReceiverFromSmtp线程池中的线程暂停获取邮件信息;File-Process进程继续监听;
第一处理模块:配置为MsgProcess线程池中的多个MsgProcess线程从所述Redis和第一阻塞队列中获取所述邮件信息的头信息及临时文件信息,为防止多个MsgProcess线程对Redis操作有冲突,需要对Redis进行加锁操作,对所述邮件信息的头信息及临时文件信息进行处理,将处理后的邮件信息的头信息及临时文件信息存储到第二阻塞队列中;
解析模块:配置为ParserEml线程池中的ParserEml线程从所述第二阻塞队列LinkedBlockingQueue中获取包括邮件主题、收件人、发件人和邮件头信息的邮件信息,TikaParser线程池中的TikaParser线程从所述第一阻塞队列LinkedBlockingQueue中获取邮件附件的相关信息,并由ParserEml线程和TikaParser线程分别进行解析,解析完成后,将解析得到的信息发送给策略匹配进程;
临时文件处理模块:配置为按预设策略处理解析过程中产生的临时文件。
6.如权利要求5所述的大附件邮件的多线程并发处理装置,其特征在于,所述File-Process进程在启动时即开启监控分配的内存资源占用情况的功能。
7.如权利要求5所述的大附件邮件的多线程并发处理装置,其特征在于,所述临时文件处理模块,还对于符合规则可以立即删除的临时文件,立即删除该临时文件;对于不能立即删除的临时文件,设置定时器,到达时间时删除该临时文件。
8.如权利要求5所述的大附件邮件的多线程并发处理装置,其特征在于,通过File-Process对内存的监控,控制邮件的解析速率。
9.一种大附件邮件的多线程并发处理系统,其特征在于,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如权利要求1-4之任一项所述的大附件邮件的多线程并发处理方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如权利要求1-4之任一项所述的大附件邮件的多线程并发处理方法。
CN202011299553.3A 2020-11-19 2020-11-19 一种大附件邮件的多线程并发处理方法及装置 Active CN112612619B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011299553.3A CN112612619B (zh) 2020-11-19 2020-11-19 一种大附件邮件的多线程并发处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011299553.3A CN112612619B (zh) 2020-11-19 2020-11-19 一种大附件邮件的多线程并发处理方法及装置

Publications (2)

Publication Number Publication Date
CN112612619A CN112612619A (zh) 2021-04-06
CN112612619B true CN112612619B (zh) 2023-10-20

Family

ID=75225053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011299553.3A Active CN112612619B (zh) 2020-11-19 2020-11-19 一种大附件邮件的多线程并发处理方法及装置

Country Status (1)

Country Link
CN (1) CN112612619B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113242174B (zh) * 2021-07-09 2021-11-09 太平金融科技服务(上海)有限公司深圳分公司 邮件同步方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012048667A (ja) * 2010-08-30 2012-03-08 Nec Access Technica Ltd 電子メール対応ファクシミリ装置、fax原稿処理方法、及びプログラム
CN111651789A (zh) * 2020-06-05 2020-09-11 北京明朝万达科技股份有限公司 一种基于扫描系统的多线程安全批量反馈的方法及装置
CN111917632A (zh) * 2020-07-31 2020-11-10 北京明朝万达科技股份有限公司 解析邮件的方法、装置、非易失性存储介质及电子装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117387A1 (en) * 2004-11-30 2006-06-01 Gunsalus Bradley W Propagation protection of email within a network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012048667A (ja) * 2010-08-30 2012-03-08 Nec Access Technica Ltd 電子メール対応ファクシミリ装置、fax原稿処理方法、及びプログラム
CN111651789A (zh) * 2020-06-05 2020-09-11 北京明朝万达科技股份有限公司 一种基于扫描系统的多线程安全批量反馈的方法及装置
CN111917632A (zh) * 2020-07-31 2020-11-10 北京明朝万达科技股份有限公司 解析邮件的方法、装置、非易失性存储介质及电子装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于JavaMail 的Web 邮件验证系统设计;卜凡港;《电子技术与软件工程》;2018年(第16期);第179-181页 *

Also Published As

Publication number Publication date
CN112612619A (zh) 2021-04-06

Similar Documents

Publication Publication Date Title
US8756613B2 (en) Scalable, parallel processing of messages while enforcing custom sequencing criteria
US8554846B2 (en) System and method for providing a messaging kernel
EP1696611B1 (en) Server data queuing system and method
US9729488B2 (en) On-demand mailbox synchronization and migration system
CA2613496C (en) Managing message queues
KR102011949B1 (ko) 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법
US9361165B2 (en) Automated merger of logically associated messages in a message queue
US8166480B2 (en) Reducing lock contention by adding a time slice to an active thread holding a lock
CN107783842B (zh) 一种分布式锁实现方法、设备及存储装置
WO2008101756A1 (en) Method and system for concurrent message processing
CN111737356B (zh) 一种区块链事件的处理方法及装置
CN112612619B (zh) 一种大附件邮件的多线程并发处理方法及装置
EP3066578A1 (en) Strict queue ordering in a distributed system
US9509641B1 (en) Message transmission for distributed computing systems
US9990240B2 (en) Event handling in a cloud data center
CN108121580B (zh) 应用程序通知服务的实现方法及装置
CN114138371B (zh) 配置动态加载方法、装置及计算机设备、存储介质
US11743200B2 (en) Techniques for improving resource utilization in a microservices architecture via priority queues
CN113961372A (zh) 一种mq多实例消息发送方法和装置
CN113704297B (zh) 业务处理请求的处理方法、模块及计算机可读存储介质
CN114915659B (zh) 网络请求处理方法、装置、电子设备及存储介质
EP1220511A2 (en) Memory management for packet storage
CN116643896A (zh) 进程间数据交互方法、系统、电子设备及存储介质
CN114327947A (zh) 订阅消息处理方法、装置、电子设备及自动驾驶车辆
WO2022051412A1 (en) System and method for reactive flattening map for use with a microservices or other computing environment

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