日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

發送消息示例

本文介紹如何使用Java SDK進行消息發送。

前提條件

授權信息

默認僅限阿里云賬號使用本接口,RAM用戶只有在被授予了相關API操作權限后方可使用。本接口的授權信息如下表所示。

Name

Value

API

SendMessage

RAM授權操作

mns:SendMessage

資源

acs:mns:$region:$accountid:/queues/$queueName/messages

使用說明

  • 該接口用于發送消息到指定的隊列,普通消息發送到隊列立即被消費者消費。如果生產者發送一個消息不想立即被消費者消費(典型的使用場景為定期任務),生產者可以在發送消息時設置DelaySeconds參數。發送帶DelaySeconds參數值大于0的消息初始狀態為Delayed,此時消息不能被消費者消費,只有等DelaySeconds時間后消息變成Active狀態后才可以被消費。

  • 發送消息時指定DelaySeconds參數的優先級高于延時隊列的DelaySeconds屬性,即兩個DelaySeconds屬性設置的值不同的時候以發送消息時指定的值為準。

  • 當調用API發送消息時,建議您將消息體進行Base64編碼,以免存在特殊字符導致不能正常使用。

  • 本文示例代碼中的Endpoint以您實際環境配置為主。若僅用于本地測試,可用公網域名,若需要上線使用,推薦使用內網Endpoint。SMQ支持的地域與Endpoint的對應關系,請參見功能開服和接入點。

消息體編碼選擇

當消息體無特殊字符時,建議您不使用Base64編碼。

  • 發送消息時使用message.setMessageBodyAsRawString方法設置消息體。

  • 接收消息時使用meesage.getMessageBodyAsRawString方法獲取消息體。

示例代碼

示例代碼下載,請參見SendMessageDemo。

import com.aliyun.mns.client.CloudAccount;
import com.aliyun.mns.client.CloudQueue;
import com.aliyun.mns.client.MNSClient;
import com.aliyun.mns.common.ClientException;
import com.aliyun.mns.common.ServiceException;
import com.aliyun.mns.common.utils.ServiceSettings;
import com.aliyun.mns.model.Message;

/**
 * 1. 遵循阿里云規范,env設置ak、sk。
 * 2. ${"user.home"}/.aliyun-mns.properties 文件配置如下:
 *           mns.endpoint=http://xxxxxxx
 *           mns.msgBodyBase64Switch=true/false
 */
public class SendMessageDemo {

    /**
     * replace with your queue name
     */
    private static final String QUEUE_NAME = "cloud-queue-demo";

    private static final Boolean IS_BASE64 = Boolean.valueOf(ServiceSettings.getMNSPropertyValue("msgBodyBase64Switch","false"));


    public static void main(String[] args) {
        // 遵循阿里云規范,env設置ak、sk,
        CloudAccount account = new CloudAccount(ServiceSettings.getMNSAccountEndpoint());
        MNSClient client = account.getMNSClient();

        // Demo for send message code, send 10 test message
        try {
            CloudQueue queue = client.getQueueRef(QUEUE_NAME);
            for (int i = 0; i < 10; i++) {
                Message message = new Message();
                String messageValue = "demo_message_body" + i;
                if (IS_BASE64) {
                    // base 64編碼
                    message.setMessageBody(messageValue);
                }else {
                    // 不進行任何編碼
                    message.setMessageBodyAsRawString(messageValue);
                }

                Message putMsg = queue.putMessage(message);
                System.out.println("Send message id is: " + putMsg.getMessageId());
            }
        } catch (ClientException ce) {
            System.out.println("Something wrong with the network connection between client and MNS service."
                + "Please check your network and DNS availablity.");
            ce.printStackTrace();
        } catch (ServiceException se) {
            if (se.getErrorCode().equals("QueueNotExist")) {
                System.out.println("Queue is not exist.Please create before use");
            } else if (se.getErrorCode().equals("TimeExpired")) {
                System.out.println("The request is time expired. Please check your local machine timeclock");
            }
            se.printStackTrace();
        } catch (Exception e) {
            System.out.println("Unknown exception happened!");
            e.printStackTrace();
        }

        client.close();
    }

}