最近公司要搞手機APP主動告警推送,本來想通過后台做個自動程序干這件事,定時推送,但是這樣做一些告警推送消息不能夠及時推送給用戶。
仔細想了一下,如果每一條告警記錄我都能及時發現並及時推送,豈不是更及時更准確,因為告警記錄是通過采集程序解析后及時插入數據庫的。所以,如果我在告警記錄表里建一個Inset 模式的觸發器,然后在觸發器中通過數據庫遠程調用API接口,做消息推送豈不是很好。(關於觸發器的介紹,看我以前寫的就行了 https://www.cnblogs.com/zpy1993-09/p/12152971.html)
觸發器建立后,就附帶數據庫遠程調用API接口的數據庫代碼就行了。
這里為了驗證推送,傳入死數據就行了。話不多說,上代碼:
declare @ServiceUrl as varchar(1000) declare @UrlAddress varchar(500) set @UrlAddress = 'http://遠程接口IP/wapi/JZ/' declare @FunName varchar(50) --WebService中調用的方法名:例如'getMobileCodeInfo' set @FunName = 'Work_ReceiveTask' --以下參數對應WebService中4個參數的[參數名] declare @WorkID varchar(100),@ExplainContent varchar(100),@Uid varchar(100),@IsAssignTask varchar(100) set @WorkID = 'WorkID' set @ExplainContent = 'ExplainContent' set @Uid = 'Uid' set @IsAssignTask = 'IsAssignTask' declare @P1_Value varchar(100),@P2_Value varchar(100),@P3_Value varchar(100),@P4_Value varchar(100) set @P1_Value = 56261 set @P2_Value = '123213' set @P3_Value = 309 set @P4_Value = 1 set @ServiceUrl = @UrlAddress + @FunName + '?' + @WorkID + '=' + @P1_Value +'&' + @ExplainContent + '=' + @P2_Value +'&' + @Uid + '=' + @P3_Value +'&' + @IsAssignTask + '=' + @P4_Value Declare @Object as Int Declare @ResponseText as Varchar(8000) Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; Exec sp_OAMethod @Object, 'open', NULL, 'get',@ServiceUrl,'false' Exec sp_OAMethod @Object, 'send' Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT Select @ResponseText Exec sp_OADestroy @Object GO
執行后結果: