zoukankan      html  css  js  c++  java
  • 阿里云MNS消息服务quene方式发送数据流程图

    转载于:http://www.architecy.com/archives/483

    阿里mns支持普通服务的消息服务,也就是对数据量较小的服务。

    MNS支持两种操作类型,队列和主题,也可以是队列和主题的柔和

    下面是前期使用测试的一个流程图,具体使用的是对列和主题的结合

    pom.xml

            <!-- 阿里mns 客户端 -->
            <dependency>
                <groupId>com.aliyun.mns</groupId>
                <artifactId>aliyun-sdk-mns</artifactId>
                <version>1.1.8</version>
                <classifier>jar-with-dependencies</classifier>
            </dependency>

    application-local.yml

    #mns配置
    auth:
      mns:
        id: LTAI9auC0WRljjTjabdjdojg
        secret: Xr3PkMWR55xvZ9Mrk4fIYPyWjnAajZdddggd
        endpoint: http://31373024.mns.cn-beijing.aliyuncs.com/
        connectTime: 3000
        socketTime: 3000

    MnsConfig.java

    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.stereotype.Component;
    
    
    @Data
    @Component
    @RefreshScope
    @ConfigurationProperties(prefix = "auth.mns")
    public class MnsConfig {
    
        private String id;
    
        private String secret;
    
        private String endpoint;
    
        private int connectTime;
    
        private int socketTime;
    }

    MnsTopic.java

    import com.aliyun.mns.client.CloudAccount;
    import com.aliyun.mns.client.CloudTopic;
    import com.aliyun.mns.client.MNSClient;
    import com.aliyun.mns.common.ClientException;
    import com.aliyun.mns.common.ServiceException;
    import com.aliyun.mns.common.http.ClientConfiguration;
    import com.aliyun.mns.model.TopicMessage;
    import javafx.util.Pair;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    
    @RefreshScope
    @Component
    public class MnsTopic {
        private static Logger logger = LoggerFactory.getLogger(MnsTopic.class);
    
        private static final String TOPIC_NAME = "test-dev";
        /** success */
        private static final int RESULT_SUCCESS = 0;
    
        private static final int RESULT_FAIL = -1;
    
        private MNSClient client;
    
        @Autowired
        private MnsConfig mnsConfig;
    
    
    
    
        @PostConstruct
        public void init(){
            ClientConfiguration configuration = new ClientConfiguration();
            configuration.setConnectionTimeout(mnsConfig.getConnectTime());
            configuration.setSocketTimeout(mnsConfig.getSocketTime());
            logger.info("MnsTopic init  endpoint={}", mnsConfig.getEndpoint());
            logger.info("MnsTopic init  id={}", mnsConfig.getId());
            logger.info("MnsTopic init  secret={}", mnsConfig.getSecret());
            CloudAccount account = new CloudAccount(
                    mnsConfig.getId(),
                    mnsConfig.getSecret(),
                    mnsConfig.getEndpoint(), configuration);
            client = account.getMNSClient();
        }
    
        /**
         * 消息生产逻辑
         *
         * @param message
         * @return <code,msg>; code:0成功-1失败; msg:成功为messageId失败为失败原因
         */
        public Pair<Integer, String> publish(TopicMessage message) {
            String msg = "";
            int code = RESULT_FAIL;
            do {
                if (message == null) {
                    msg = "msg is null";
                    break;
                }
                String body = message.getMessageBody();
                if (body == null || body.trim().length() == 0) {
                    msg = "msg's body is empty";
                    break;
                }
                try {
                    CloudTopic topic = client.getTopicRef(TOPIC_NAME);
                    TopicMessage result = topic.publishMessage(message);
                    code = RESULT_SUCCESS;
                    msg = result.getMessageId();
                } catch (ClientException ce) {
                    msg = "mns client exception : " + ce.toString();
                } catch (ServiceException se) {
                    msg = "mns server exception : " + se.toString();
                } catch (Exception e) {
                    msg = "mns unknown exception happened!: " + e.getMessage();
                } finally {
                    break;
                }
            } while (true);
            if (logger.isDebugEnabled()){
                logger.debug("MnsTopic.publish()|{}|{}", code, msg);
            }
            return new Pair<>(code, msg);
        }
    
        public static void main(String[] args) {
    
            TopicMessage message = new TopicMessage() {
                @Override
                public String getMessageBody() {
                    return "要发送的消息内容";
                }
            };
            MnsTopic mnsTopic = new MnsTopic();
            mnsTopic.publish(message);
        }
    }

    结束。

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/it-deepinmind/p/12740101.html
Copyright © 2011-2022 走看看