开发者社区> 问答> 正文

java版本 订阅短信回执队列,无法获取到短信回执信息!

# java版本 订阅短信回执队列,无法获取到短信回执信息!

> 根据官方 demo 代码,订阅短信回执队列, 无法获取到短信回执信息!

## 操作步骤

- 在 spring 容器初始化后,执行官方 订阅短信回执方法,即开启线程池(这里看到,服务启动后,在java进程中可以看到改线程信息,处于 waiting 状态)

相关代码如下(即官方提供的demo代码):

```
public class StartupListener implements ApplicationListener<ContextRefreshedEvent> {

@Override
public void onApplicationEvent(ContextRefreshedEvent event) {

if (event.getApplicationContext().getParent() == null) {
//开启线程池
try {
startThreadPool();
} catch (ClientException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}

/**
* 开启阿里短信回执 线程池
*/
public void startThreadPool() throws ClientException, ParseException {

DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();

//设置异步线程池大小及任务队列的大小,还有无数据线程休眠时间
puller.setConsumeMinThreadSize(6);
puller.setConsumeMaxThreadSize(16);
puller.setThreadQueueSize(200);
puller.setPullMsgThreadSize(3);
//和服务端联调问题时开启,平时无需开启,消耗性能
puller.openDebugLog(false);

puller.startReceiveMsg(BaseConstants.SMS_ACCESS_KEY_ID, BaseConstants.SMS_ACCESS_KEY_SECRET, BaseConstants.SMS_MESSAGE_TYPE_1, BaseConstants.SMS_QUEUE_NAME, new SmsReportListener());
}
}
```

```
public class SmsReportListener implements MessageListener {


@Autowired
UpmsApiService mUpmsApiService;

@Override
public boolean dealMessage(Message message) {
return mUpmsApiService.dealMessage(message);
}
}
```

经过反复检查,启动线程池接收消息传入的 参数如下: 对应的 AccessKeyId (没传错) ,对应的 AccessKeySecret(没传错)SmsReport(写死该字符串) 订阅的队列名称为文档中指定位置获取的字符串, 如下图


按照官方的操作后  仍无法接收到订阅消息,希望帮助处理一下!

展开
收起
271467726451220755 2018-11-23 11:00:25 817 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载