将 极光推送 放到mq队列中,mq有几个注解 都是配合使用的 最简单的两个
@RabbitListener(queues = “ ”,containerFactory="rabbitListenerContainerFactory")
@RabbitHandler
在方法中一定要有异常捕捉 ,要不然会陷入死循环,通过异常来跳出队列发送
调用极光的方法
@Component
@RabbitListener(queues = JPushServer.JPUSH_MQ_NAME,containerFactory="rabbitListenerContainerFactory")
public class JPushServer {
public static final StringJPUSH_MQ_NAME ="JPUSH_MQ_NAME";
public static final String APPKEY ="appKey";
public static final String MASTERSECRET =" MASTERSECRET ";
public static JPushClientjpushClient =null;
@RabbitHandler
void getJPush(JPushModel jPushModel){
try {
//推送目标 为空时全部推送
if(jPushModel.getObject() ==null){
sendPush(jPushModel.getContent(),jPushModel.getTitle(),jPushModel.getParams());
}else{
//推送目标 String类型时单体推送
if(jPushModel.getObject().getClass().isArray()){
sendByAlias(jPushModel.getContent(),jPushModel.getTitle(),jPushModel.getParams(),(String) jPushModel.getObject());
}else if(jPushModel.getObject()instanceof String){//推送目标 List类型时选择性推送
sendByAliasList(jPushModel.getContent(),jPushModel.getTitle(),jPushModel.getParams(),(List) jPushModel.getObject());
}
}
Thread.sleep(5000);
jpushClient.close();
}catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* 功能描述:
* 〈全平台推送〉
* @Param: [msg, title, params]
* @Return: void
* @Author:
* @Date: 2019/8/14 14:10
*/
public static void sendPush(String msg,String title, Map params) {
jpushClient =new JPushClient(MASTERSECRET, APPKEY);
PushPayload payload =buildPushObjectByMessage(msg,title,params);
try {
PushResult result =jpushClient.sendPush(payload);
}catch (Exception e) {
e.printStackTrace();
}
}
public static PushPayloadbuildPushObjectByMessage(String content,String title, Map params) {
PushPayload.Builder builder = PushPayload.newBuilder();
builder.setPlatform(Platform.all())// 设置接受的平台
.setAudience(Audience.all());// Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
Notification.Builder notificationBuilder = Notification.newBuilder();
JPushServer.notificationBuilder(notificationBuilder,content,title,params);
builder.setNotification(notificationBuilder.build());
return builder.build();
}
/**
* 功能描述:
* 〈根据别名推送〉
* @Param: [content, title, params, userId]
* @Return: void
* @Author:
* @Date: 2019/8/14 14:17
*/
public static void sendByAlias(String content,String title, Map params, String userId) {
ClientConfig clientConfig = ClientConfig.getInstance();
JPushClient jpushClient =new JPushClient(MASTERSECRET, APPKEY, null, clientConfig);
List users =new ArrayList();
users.add(userId);
PushPayload payload =buildPushObjectByAlias(content,title, params, users);
try {
PushResult result = jpushClient.sendPush(payload);
}catch (APIConnectionException e) {
}catch (APIRequestException e) {
}
}
/**
* 功能描述:
* 〈根据别名集合发送〉
* @Param: [content, title, params, users]
* @Return: void
* @Author:
* @Date: 2019/8/14 14:18
*/
public static void sendByAliasList(String content,String title, Map params,List users) {
ClientConfig clientConfig = ClientConfig.getInstance();
JPushClient jpushClient =new JPushClient(MASTERSECRET, APPKEY, null, clientConfig);
PushPayload payload =buildPushObjectByAlias(content, title,params, users);
try {
PushResult result = jpushClient.sendPush(payload);
}catch (APIConnectionException e) {
}catch (APIRequestException e) {
}
}
private static PushPayloadbuildPushObjectByAlias(String content,String title, Map params, List userIds) {
PushPayload.Builder builder = PushPayload.newBuilder();
builder.setPlatform(Platform.all());
builder.setAudience(Audience.alias(userIds));
Notification.Builder notificationBuilder = Notification.newBuilder();
JPushServer.notificationBuilder(notificationBuilder,content,title,params);
builder.setNotification(notificationBuilder.build());
return builder.build();
}
public static void notificationBuilder(Notification.Builder notificationBuilder,String content,String title, Map params){
notificationBuilder.setAlert(content);
notificationBuilder.addPlatformNotification(IosNotification.newBuilder().setAlert(content).setSound("happy").addExtras(params).build());
notificationBuilder.addPlatformNotification(AndroidNotification.newBuilder().setTitle(title).setAlert(content).addExtras(params).build());
}
public static void main(String[] args) {
Map params =new HashMap();
//map里面可以放一些你需要展示的或者你需要传递的数据
params.put("type", "1");
sendByAlias("(即将作业)您的作业将于2小时后开始","测试标题", params,"1" );
}
}
调用推送
/**
* 功能描述:
* 〈您好,您申请的巴拿马籍杂货船“豪兴1号”离金海码头6号泊位的引航申请,主引XXX变更为XXX,负责本次引航任务。〉
* @Param: [jPushRequest]
* @Return: void
* @Author:
* @Date: 2019/8/14 16:35
*/
public void agentChangePilot(JPushRequest jPushRequest){
String content ="您好,您申请的"+jPushRequest.getNationality()+"籍"+jPushRequest.getShipType()+
"“"+jPushRequest.getShipName()+
"”"+jPushRequest.getJobType()+jPushRequest.getAimName()+"{4}的引航申请,主引{5}变更为{6},负责本次引航任务。";
getData(content,new JPushModel(),jPushRequest);
}
public void getData(String content,JPushModel jPushModel,JPushRequest jPushRequest){
jPushModel.setContent(content);
jPushModel.setParams(jPushRequest.getParams());
jPushModel.setObject(jPushRequest.getObject());
jPushModel.setTitle(jPushRequest.getTitle());
rabbitTemplate.convertAndSend(JPushServer.JPUSH_MQ_NAME,jPushModel);
}
极光推送 + MQ
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- XPush 项目地址 一个轻量级、可插拔的Android消息推送框架。一键集成推送(极光推送、友盟推送、华为、小米...
- 基本概念 从技术而言,信息推送是一项以数据挖掘、自然语言处理以及互联网等多门技术为基础的综合性方向。将合适的信息推...
- 极光推送API篇 API传送门 设置调试模式 API 初始化推送服务 API 停止与恢复推送服务 API 别名与标...
- App中推送功能越来越普及,但是对于不经常做推送的人来说配置证书真的是非常痛苦的事。本文将以集成极光推送为例,详细...