1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

refactor sms module

This commit is contained in:
fangjian0423 2019-02-24 20:28:20 +08:00
parent 7fe95726ee
commit ac11a3a752
7 changed files with 61 additions and 89 deletions

View File

@ -10,17 +10,10 @@ Spring Cloud Alibaba 已经发布了 0.2.2.BUILD-SNAPSHOT 版本,需要首先
---- ----
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId> <artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.2.BUILD-SNAPSHOT</version> <version>0.2.0.RELEASE</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>

View File

@ -37,6 +37,7 @@
<module>rocketmq-example</module> <module>rocketmq-example</module>
<module>spring-cloud-bus-rocketmq-example</module> <module>spring-cloud-bus-rocketmq-example</module>
<module>schedulerx-example/schedulerx-simple-task-example</module> <module>schedulerx-example/schedulerx-simple-task-example</module>
<module>sms-example</module>
</modules> </modules>
<build> <build>

View File

@ -3,47 +3,22 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>alibaba.com</groupId>
<artifactId>sms-example</artifactId> <artifactId>sms-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<description>Example demonstrating how to use alicloud sms</description>
<name>sms-example</name>
<description>Demo project for Spring Boot</description>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <artifactId>spring-cloud-alibaba-examples</artifactId>
<artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.cloud</groupId>
<version>2.0.6.RELEASE</version> <version>0.2.2.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository --> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
<spring-cloud-alibaba-alicloud.version>0.2.2.BUILD-SNAPSHOT</spring-cloud-alibaba-alicloud.version>
</properties> </properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba-alicloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies> <dependencies>
<!--Spring Boot --> <!--Spring Boot -->
@ -59,11 +34,6 @@
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alicloud-sms</artifactId> <artifactId>spring-cloud-starter-alicloud-sms</artifactId>
</dependency> </dependency>
<dependency>
<groupId>alibaba.com</groupId>
<artifactId>env-extension</artifactId>
<version>0.2.2.BUILD-SNAPSHOT</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -72,6 +42,14 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${maven-deploy-plugin.version}</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>

View File

@ -15,7 +15,6 @@
*/ */
package org.springframework.cloud.alibaba.cloud.example; package org.springframework.cloud.alibaba.cloud.example;
import org.springframework.alicloud.env.extension.ImportExtraConfig;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -23,7 +22,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* *
*/ */
@SpringBootApplication @SpringBootApplication
@ImportExtraConfig(name = "/Users/toava/sms.properties")
public class SmsApplication { public class SmsApplication {
public static void main(String[] args) throws Exception{ public static void main(String[] args) throws Exception{

View File

@ -15,14 +15,6 @@
*/ */
package org.springframework.cloud.alicloud.sms.base; package org.springframework.cloud.alicloud.sms.base;
import com.aliyun.mns.client.CloudQueue;
import com.aliyun.mns.common.ClientException;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.model.Message;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@ -33,12 +25,21 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ScheduledThreadPoolExecutor;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.aliyun.mns.client.CloudQueue;
import com.aliyun.mns.common.ClientException;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.model.Message;
/** /**
* 阿里通信官方消息默认拉取工具类 * 阿里通信官方消息默认拉取工具类
*/ */
public class DefaultAlicomMessagePuller { public class DefaultAlicomMessagePuller {
private Log logger = LogFactory.getLog(DefaultAlicomMessagePuller.class); private Log log = LogFactory.getLog(DefaultAlicomMessagePuller.class);
private String mnsAccountEndpoint = "https://1943695596114318.mns.cn-hangzhou.aliyuncs.com/";// 阿里通信消息的endpoint,固定 private String mnsAccountEndpoint = "https://1943695596114318.mns.cn-hangzhou.aliyuncs.com/";// 阿里通信消息的endpoint,固定
private String endpointNameForPop = "cn-hangzhou"; private String endpointNameForPop = "cn-hangzhou";
@ -103,7 +104,7 @@ public class DefaultAlicomMessagePuller {
sPollingMap.put(queueName, false); sPollingMap.put(queueName, false);
lockObj.notifyAll(); lockObj.notifyAll();
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_WakeUp:Everyone WakeUp and Work!"); log.info("PullMessageTask_WakeUp:Everyone WakeUp and Work!");
} }
} }
} }
@ -131,7 +132,7 @@ public class DefaultAlicomMessagePuller {
if (p != null && p) { if (p != null && p) {
try { try {
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_sleep:" log.info("PullMessageTask_sleep:"
+ Thread.currentThread().getName() + Thread.currentThread().getName()
+ " Have a nice sleep!"); + " Have a nice sleep!");
} }
@ -140,7 +141,7 @@ public class DefaultAlicomMessagePuller {
} }
catch (InterruptedException e) { catch (InterruptedException e) {
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_Interrupted!" log.info("PullMessageTask_Interrupted!"
+ Thread.currentThread().getName() + Thread.currentThread().getName()
+ " QueueName is " + queueName); + " QueueName is " + queueName);
} }
@ -158,7 +159,7 @@ public class DefaultAlicomMessagePuller {
if (debugLogOpen) { if (debugLogOpen) {
SimpleDateFormat format = new SimpleDateFormat( SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"); "yyyy-MM-dd HH:mm:ss");
logger.info("PullMessageTask_popMessage:" log.info("PullMessageTask_popMessage:"
+ Thread.currentThread().getName() + "-popDone at " + Thread.currentThread().getName() + "-popDone at "
+ "," + format.format(new Date()) + " msgSize=" + "," + format.format(new Date()) + " msgSize="
+ (popMsg == null ? 0 : popMsg.getMessageId())); + (popMsg == null ? 0 : popMsg.getMessageId()));
@ -171,7 +172,7 @@ public class DefaultAlicomMessagePuller {
else { else {
if (setPolling(queueName)) { if (setPolling(queueName)) {
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_setPolling:" log.info("PullMessageTask_setPolling:"
+ Thread.currentThread().getName() + " Polling!"); + Thread.currentThread().getName() + " Polling!");
} }
} }
@ -180,7 +181,7 @@ public class DefaultAlicomMessagePuller {
} }
do { do {
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_Keep_Polling" log.info("PullMessageTask_Keep_Polling"
+ Thread.currentThread().getName() + Thread.currentThread().getName()
+ "KEEP Polling!"); + "KEEP Polling!");
} }
@ -189,7 +190,7 @@ public class DefaultAlicomMessagePuller {
} }
catch (ClientException e) { catch (ClientException e) {
if (debugLogOpen) { if (debugLogOpen) {
logger.info( log.info(
"PullMessageTask_Pop_Message:ClientException Refresh accessKey" "PullMessageTask_Pop_Message:ClientException Refresh accessKey"
+ e); + e);
} }
@ -200,7 +201,7 @@ public class DefaultAlicomMessagePuller {
} }
catch (ServiceException e) { catch (ServiceException e) {
if (debugLogOpen) { if (debugLogOpen) {
logger.info( log.info(
"PullMessageTask_Pop_Message:ServiceException Refresh accessKey" "PullMessageTask_Pop_Message:ServiceException Refresh accessKey"
+ e); + e);
} }
@ -211,7 +212,7 @@ public class DefaultAlicomMessagePuller {
} }
catch (Exception e) { catch (Exception e) {
if (debugLogOpen) { if (debugLogOpen) {
logger.info( log.info(
"PullMessageTask_Pop_Message:Exception Happened when polling popMessage: " "PullMessageTask_Pop_Message:Exception Happened when polling popMessage: "
+ e); + e);
} }
@ -224,7 +225,7 @@ public class DefaultAlicomMessagePuller {
if (dealResult) { if (dealResult) {
// remember to delete message when consume message successfully. // remember to delete message when consume message successfully.
if (debugLogOpen) { if (debugLogOpen) {
logger.info("PullMessageTask_Deal_Message:" log.info("PullMessageTask_Deal_Message:"
+ Thread.currentThread().getName() + "deleteMessage " + Thread.currentThread().getName() + "deleteMessage "
+ popMsg.getMessageId()); + popMsg.getMessageId());
} }
@ -232,19 +233,19 @@ public class DefaultAlicomMessagePuller {
} }
} }
catch (ClientException e) { catch (ClientException e) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:" + messageType
+ messageType + ",queueName:" + queueName, e); + ",queueName:" + queueName, e);
break; break;
} }
catch (ServiceException e) { catch (ServiceException e) {
if (e.getErrorCode().equals("AccessDenied")) { if (e.getErrorCode().equals("AccessDenied")) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName + messageType + ",queueName:" + queueName
+ ",please check messageType and queueName", e); + ",please check messageType and queueName", e);
} }
else { else {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName, e); + messageType + ",queueName:" + queueName, e);
} }
break; break;
@ -252,30 +253,30 @@ public class DefaultAlicomMessagePuller {
} }
catch (com.aliyuncs.exceptions.ClientException e) { catch (com.aliyuncs.exceptions.ClientException e) {
if (e.getErrCode().equals("InvalidAccessKeyId.NotFound")) { if (e.getErrCode().equals("InvalidAccessKeyId.NotFound")) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName + messageType + ",queueName:" + queueName
+ ",please check AccessKeyId", e); + ",please check AccessKeyId", e);
} }
if (e.getErrCode().equals("SignatureDoesNotMatch")) { if (e.getErrCode().equals("SignatureDoesNotMatch")) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName + messageType + ",queueName:" + queueName
+ ",please check AccessKeySecret", e); + ",please check AccessKeySecret", e);
} }
else { else {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName, e); + messageType + ",queueName:" + queueName, e);
} }
break; break;
} }
catch (Exception e) { catch (Exception e) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:" + messageType
+ messageType + ",queueName:" + queueName, e); + ",queueName:" + queueName, e);
try { try {
Thread.sleep(sleepSecondWhenNoData); Thread.sleep(sleepSecondWhenNoData);
} }
catch (InterruptedException e1) { catch (InterruptedException e1) {
logger.error("PullMessageTask_execute_error,messageType:" log.error("PullMessageTask_execute_error,messageType:"
+ messageType + ",queueName:" + queueName, e); + messageType + ",queueName:" + queueName, e);
} }
} }

View File

@ -15,6 +15,15 @@
*/ */
package org.springframework.cloud.alicloud.sms.base; package org.springframework.cloud.alicloud.sms.base;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.aliyun.mns.client.CloudAccount; import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.CloudQueue; import com.aliyun.mns.client.CloudQueue;
import com.aliyun.mns.client.MNSClient; import com.aliyun.mns.client.MNSClient;
@ -27,21 +36,13 @@ import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType; import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.profile.IClientProfile;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/** /**
* 获取接收云通信消息的临时token * 获取接收云通信消息的临时token
* *
*/ */
public class TokenGetterForAlicom { public class TokenGetterForAlicom {
private Log logger = LogFactory.getLog(TokenGetterForAlicom.class); private Log log = LogFactory.getLog(TokenGetterForAlicom.class);
private String accessKeyId; private String accessKeyId;
private String accessKeySecret; private String accessKeySecret;
private String endpointNameForPop; private String endpointNameForPop;
@ -100,7 +101,7 @@ public class TokenGetterForAlicom {
return token; return token;
} }
else { else {
logger.error("getTokenFromRemote_error,messageType:" + messageType + ",code:" log.error("getTokenFromRemote_error,messageType:" + messageType + ",code:"
+ response.getCode() + ",message:" + response.getMessage()); + response.getCode() + ",message:" + response.getMessage());
throw new ServerException(response.getCode(), response.getMessage()); throw new ServerException(response.getCode(), response.getMessage());
} }
@ -124,8 +125,8 @@ public class TokenGetterForAlicom {
CloudAccount account = new CloudAccount(token.getTempAccessKeyId(), CloudAccount account = new CloudAccount(token.getTempAccessKeyId(),
token.getTempAccessKeySecret(), mnsAccountEndpoint, token.getTempAccessKeySecret(), mnsAccountEndpoint,
token.getToken()); token.getToken());
// logger.warn("ak:"+token.getTempAccessKey()); // log.warn("ak:"+token.getTempAccessKey());
// logger.warn("token:"+token.getToken()); // log.warn("token:"+token.getToken());
MNSClient client = account.getMNSClient(); MNSClient client = account.getMNSClient();
CloudQueue queue = client.getQueueRef(queueName); CloudQueue queue = client.getQueueRef(queueName);
token.setClient(client); token.setClient(client);

View File

@ -15,12 +15,12 @@
*/ */
package org.springframework.cloud.alicloud.sms.endpoint; package org.springframework.cloud.alicloud.sms.endpoint;
import java.util.Map;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import java.util.Map; @Endpoint(id = "sms")
@Endpoint(id = "sms-info")
public class SmsEndpoint { public class SmsEndpoint {
@ReadOperation @ReadOperation