刚刚过去的七夕,不知道各位小伙伴们是否有被“孤寡”刷屏呢? 

java如何定时消费kafka消息 java实现定时发送消息_发送消息

       :孤寡,孤寡,孤寡

   这期,小编就带大家写代码,利用java实现自动连续发送消息,效果如下图:


java如何定时消费kafka消息 java实现定时发送消息_利用java实现正弦曲线的绘制_02

(小编不敢找别人测试,就用文件传输助手测试吧)

    接下来的代码,学习过java的小伙伴们应该很轻松可以搞定,因为每行代码是什么意思很容易明白,平时没事多去阅读java API文档,总会发现一些好玩的东西。小编也在服务器上放置了java API文档,读者朋友可以打开 https://java.123net.top 进行阅读。没有学过java的小伙伴也不用着急,接下来本公众号会发布一个系列的图文,带你从零基础开始了解一些java的知识,并利用这些知识,从面向对象(object)编程到面向对象(Boyfriend/Girlfriend?)。(手动滑稽)

     首先,肯定是打开eclipse,创建好包和类,写好main方法。(这可能是一句废话...)


java如何定时消费kafka消息 java实现定时发送消息_java如何定时消费kafka消息_03

     接下来,我们分析一下消息自动连续发送消息这个需求如何实现。首先,我们在微信或者QQ发送消息时,在聊天框输入文字后按回车键就可以发送消息。在Windows系统中当剪贴板有文本内容时,按下Ctrl+V键就可以将文本粘贴出来。利用这点,我们可以利用计算机程序实现自动操作键盘来实现自动发送消息,即先设置剪贴板内容,然后Ctrl+V将剪贴板的内容粘贴到聊天框,接下来回车键发送消息。

    查阅API文档可知,java.awt包中的Robot类可以用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。


java如何定时消费kafka消息 java实现定时发送消息_java如何定时消费kafka消息_04

java API 中的Robot类

    这一步,我们开始写代码实现这个功能。首先要定义两个变量,用来表示需要连续发送的内容和连续发送的次数。这里为了方便,可以用“,”将要发送的消息隔开,利用String类的split方法进行分割,用一个数组存放。然后,我们创建一个Robot对象(记得导包,抛出异常)。接下来,获取默认工具包,然后获取系统 Clipboard的一个实例(用于设置剪贴板内容)。


java如何定时消费kafka消息 java实现定时发送消息_利用java实现正弦函数的绘制_05

    然后就要开始进行消息发送了,我们需要写一个for循环,实现消息的循环发送。再在这个for里面嵌套一个增强型for循环,从而遍历之前得到的消息数组。这一步先设置好剪贴板内容,这里调用Clipboard类的setContents方法,我们查阅文档可知,我们的参数不能直接是字符串,需要传输一个StringSelection的对象,于是,我们创建一个StringSelection对象实现传输 String所需能力的Transferable。接下来,给setContents方法传入参数(查阅API文档易知,第二个参数传入null即可,好像也可以传一个没有对象的野指针?)


java如何定时消费kafka消息 java实现定时发送消息_利用java实现正弦函数的绘制_06

    下面就开始实现模拟按键操作了,Robot类的keyPress(按下)方法和keyRelease(松开)方法就可以模拟键盘操作。我们粘贴并发送消息,就是一个按下Ctrl+V然后松开,接下来按回车的过程。我们将键码的参数传入,最后在加上一个delay方法,从而设置消息发送的间隔(单位是毫秒,最大是60000,为了不被接受者拉黑,建议设置3000以上,小于500那就是消息轰炸了!!!)。


java如何定时消费kafka消息 java实现定时发送消息_发送消息_07

    到这里,这个程序就算是写完了,中间如果有报错的,大多是忘记导包,可以按Ctrl+shift+O快速导包。运行这个程序,然后用鼠标选中聊天框,就能自动连续发送消息了!

    大功告成了?不!这个程序还不够完美,我们对这个程序再进行一些改进。

    例如,在使用这个程序的时候,消息会按照一个规律发送,这样就容易被消息接收者看出规律,从而知道是计算机程序自动发送的,对于这点,我们引用Random类进行消息数组的随机抽取,使发送的消息没有规律。


java如何定时消费kafka消息 java实现定时发送消息_利用java实现正弦曲线的绘制_08

Random版程序

    另外,我们的消息库可能比较大,土味情话、心灵鸡汤等等都有非常多的文案,在程序中的word变量处操作不便,而且希望可以随时切换消息库。对于这个问题,我们可以引入ArrayList作为消息的容器,利用FileReader(最好用BufferedReader)读取计算机上的文本文件,将文件上的消息随机发送出去,这样消息量比较大时,就不易被看出来是机器操作了。(当然,间隔的时间也可以使用Random类产生的随机数来控制,实现随机间隔时间发送消息)。


java如何定时消费kafka消息 java实现定时发送消息_java如何定时消费kafka消息_09

IO版程序


java如何定时消费kafka消息 java实现定时发送消息_java如何定时消费kafka消息_10

土味情话消息库示例

    到这里,这个自动连续循环发送消息的程序算是比较方便使用了

java如何定时消费kafka消息 java实现定时发送消息_利用java实现正弦曲线的绘制_11