package com.walker.push; import com.walker.infrastructure.core.ApplicationBeanInitialized; import java.util.List; /** * 推送者定义。 *

1.每个推送者使用一种推送通道,实现一种类型推送

*
 *     T 提供了推送内部转换对象,把业务转换成通道可识别的内部对象发送,如:短信(SmsMessage)等。
 * 
* @author 时克英 * @date 2023-04-21 */ public interface Pushable extends ApplicationBeanInitialized { /** * 返回推送者ID,唯一 * @return */ String getId(); /** * 返回推送者名称 * @return */ String getName(); /** * 返回推送者支持的通道,只能一个。 * @return */ NotificationChannel getNotificationChannel(); /** * 推送方法。 * @param notification * @return * @throws PushException */ PushResult push(Notification notification) throws PushException; /** * 把通知对象转换成目标可用的数据对象 * @param notification * @return 一个通知可能包含多个接收者,所以返回是个业务对象集合。 * @date 2023-04-22 */ List translateToTarget(Notification notification); /** * 推送者是否支持异步执行,如果支持则在保存时需要重写回调方法。 * @return * @date 2023-04-24 */ boolean supportAsync(); /** * 在异步任务中,设置回调机制,当推送者是异步调用时必须传递该对象。 * @param listener * @date 2023-04-24 */ void setPushStatusListener(PushStatusListener listener); /** * 返回异步推送的监听器对象,如果同步则为空。 * @return * @date 2023-04-27 */ PushStatusListener getPushStatusListener(); }