消息日志介绍

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:3

消息日志介绍

变更记录


产品版本
更新内容更新日期
V6.0.1消息日志所属应用从系统服务云调整到基础服务云的公共设置2023年10月23日

1 简介

1.1 功能介绍

消息日志存储消息中心所有业务推送的各个渠道为单位的消息日志。


消息日志默认只保留渠道消息失败日志,用户可以通过打开所需渠道上的启用日志开关,允许消息中心记录该渠道完整日志。


1.2 系统路径

V5.0及以下:【系统服务云】→【系统管理】→【消息平台】→【消息日志】

V6.0:          【基础服务云】→【公共设置】→【消息设置】→【消息日志

1.3 应用场景

1.消息失败重发

消息中心对于业务推送的消息,有一套完整处理机制,业务在使用消息中心接口推送消息,由于一些不可预知的因素,导致消息推送失败,失败消息会保存在消息中心消息日志列表中。


消息中心针对失败的消息提供失败重发机制,使用调度任务完成失败消息扫描,默认扫描间隔5min,用户可以根据实际需求修改调度执行间隔时间。标准产品中一次调度获取200条失败消息,同一条失败消息最多重试5次,消息中心的失败消息按照修改时间先后排队等待重试。


在最新版本中失败消息重发必须符合有效时间范围,默认为15天,范围之外的失败消息不再参与重试,用户可根据实际情况自动调节时间有效范围。



2.业务干预消息推送

业务使用消息中心推送消息可能具有特定业务场景以及时效性,比如工作推送的协办消息,任务待办A在为处理之前,请求人员B协办,因为mq问题消息处于待发送状态,或者协办消息推送失败。


但是该协办消息在可以推送之前,待办A处理完成,之后针对该协办消息的推送则没有意义。此时,工作流可以使用该功能在消息中心推送过程中排除该协办消息。


消息中心提供了一套机制,允许业务通过预置事件方式来,干预消息中心消息的推送过程,过滤消息,达到业务目的。


最新版本中,业务需要通过以下两步骤来使用该功能:

步骤1:消息中心事件表中注册业务事件;



在开发平台中表单msg_eventlisteners预览中插入业务事件监听记录,如下图所示:



业务对象编码:为业务单据编码,与消息对象中的业务编码需要一致;

消息类型编码:监听的消息类型,可选范围通常为

[*|message|alarm|warning|task|...],可以使用*号代替所有类型;

事件数据:注册监听事件,json格式,数据根据业余插件需求而定:


{

    "eventListeners": [{

        "event": "bizInterveneSendMsg",

        "userDefinied": true,

        "implementationtype": "class",

        "appId": "hsas",

        "implementation": "kd.xxx.SubscribeMessageResult",

        "methodName": "calculateInterveneMessage"

    }]

}

1.event:事件名称,固定不变;

2.userDefinied:是否为用户定义,固定不变;

3.implementationtype:实现类型,使用class;

4.appId:业务插件部署的服务节点应用ID;

5.implementation:业务插件全路径;

6.methodName: 业务插件中计算方法;


步骤2:业务插件实现消息中心事件接口,并按照要求实现方法:


package kd.bos.message.api;

import java.util.Map;

/**

 * 业务通过订阅消息中心事件方式,预制事件数据在消息中心,使用以下功能:

 * 1.订阅消息推送成功结果  2.订阅消息推送失败结果 3.干预消息推送过程

 */

public interface IMsgEventListener {

    /**

     * 消息推送干预操作接口,业务可以实现该接口,干预本业务下消息发送逻辑

     * @param param 包含四种类型信息  entityNumber |businessKey |msgId |channelMsgId

     * @return boolean 业务通过计算之后,判断该消息是仍需要发送,continueSend=[true|false]

     */

    default boolean calculateInterveneMessage(Map<String, Object> param){

       return true;

    }

}


3.业务订阅消息实时推送结果

业务通过消息中心接口推送消息,消息中心将消息ID返回给业务,这里有一个问题。业务并不知道各个渠道消息是否真的推送成功,消息中心推送该项功能,业务可以通过注册事件,订阅消息中心回执的方式,获取到渠道消息的推送结果。


业务需要通过以下两步骤来使用该功能:


步骤1:消息中心事件表中注册订阅事件;


订阅事件的注册方式可以参考4.7.3业务干预消息推送章节;


Fdata:注册订阅数据,json格式,数据根据业余插件需求而定:


{

    "eventListeners": [{

        "event": "failOfSendMsg",

        "userDefinied": true,

        "implementationtype": "class",

        "appId": "hsas",

        "implementation": "kd.xxx.SubscribeMessageResult",

        "methodName": "subSuccessMsgInfo"

    }, {

        "event": "successOfSendMsg",

        "userDefinied": true,

        "implementationtype": "class",

        "appId": "hsas",

        "implementation": "kd.xxx.SubscribeMessageResult",

        "methodName": "subFailMsgInfo"

    }]

}

 

1.event:事件名称,failOfSendMsg-订阅失败消息、successOfSendMsg-订阅成功消息

2.userDefinied:是否为用户定义,固定不变;

3.implementationtype:实现类型,使用class;

4.appId:业务插件部署的服务节点应用ID;

5.implementation:业务插件全路径;

6.methodName: 业务插件中计算方法;


步骤2:业务插件实现消息中心事件接口,并按照要求实现方法:


package kd.bos.message.api;

import java.util.Map;

/**

 * 业务通过订阅消息中心事件方式,预制事件数据在消息中心,使用以下功能:

 * 1.订阅消息推送成功结果  2.订阅消息推送失败结果 3.干预消息推送过程

 */

public interface IMsgEventListener {

    /***

     * 推送成功消息回执方法

     * @param   msgId

     * @param   data

     */

    void subSuccessMsgInfo(Long msgId,   Map<String, Object> data);

    /***

     * 推送失败消息回执方法

     * @param   msgId

     * @param   data

     */

    void subFailMsgInfo(Long msgId,   Map<String, Object> data);

}


步骤3:业务通过该接口,可以获取到消息的以下数据:


属性

类型

描述

msgId

Long

消息id(t_wf_message主键)

data

Map

data:{

    channelMsgId :xxxxx,    //渠道消息ID(t_wf_msgfail主键)

    state : "success | fail",   //消息状态

    errorinfo : "xxxx",   //失败消息原因

    retries : 0,    //失败消息重试次数

}




相关文档:

消息平台配置简介

消息日志介绍

变更记录产品版本更新内容更新日期V6.0.1消息日志所属应用从系统服务云调整到基础服务云的公共设置2023年10月23日1 简介1.1 功能介绍消息...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息