Step By Step
主要操作步驟
1、主賬戶A建立角色并進行相關授權;
2、主賬戶B下面建立子賬戶B1;
3、主賬戶B為子賬戶B1授權可以扮演角色;
4、子賬戶B1建立AccessKey&AccessSecret;
5、代碼實作B1認證資訊訂閱主賬戶A下面的RocketMQ。
一、主賬戶A建立角色并進行相關授權
1、登陸主賬戶A
RAM控制台建立角色

2、按需輸入必要資訊
3、為角色授權
4、必要認證參數擷取
二、主賬戶B下面建立子賬戶B1
1、登陸主賬戶B
下面建立子賬戶
三、主賬戶B為子賬戶B1授權可以扮演角色
四、子賬戶B1建立AccessKey&AccessSecret
五、代碼實作B1認證資訊訂閱主賬戶A下面的RocketMQ
1、pom.xml
<dependencies>
<!-- https://mvnrepository.com/artifact/com.aliyun.openservices/ons-client -->
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<version>1.8.6.Final</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sts</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.6</version>
</dependency>
</dependencies>
2、Code Sample
import com.aliyun.openservices.ons.api.Action;
import com.aliyun.openservices.ons.api.ConsumeContext;
import com.aliyun.openservices.ons.api.Consumer;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.aliyun.openservices.ons.api.ONSFactory;
import com.aliyun.openservices.ons.api.PropertyKeyConst;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
import java.util.Properties;
public class ConsumerTest {
public static void main(String[] args) throws ClientException {
Properties properties = new Properties();
// 您在控制台建立的Group ID。
properties.put(PropertyKeyConst.GROUP_ID, "GID_******");
//子賬戶B1的AccessKey&AccessSecret
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4G26Yrjp5QjF********", "mHlYOVU6lhnFt6****************");
IAcsClient client = new DefaultAcsClient(profile);
// 構造請求,設定參數。
AssumeRoleRequest request = new AssumeRoleRequest();
request.setRoleArn("acs:ram::*********:role/taro-submq"); // ARN
request.setRoleSessionName("taro-submq"); // RAM 角色名稱
request.setDurationSeconds(3600L); //過期時間,機關為秒,過期時間最小值為900秒,最大值為MaxSessionDuration設定的時間。預設值為3600秒。
AssumeRoleResponse response;
//發起請求,并得到響應
response = client.getAcsResponse(request);
// 從sts 請求response回報結果擷取認證資訊
properties.put(PropertyKeyConst.AccessKey, response.getCredentials().getAccessKeyId());
properties.put(PropertyKeyConst.SecretKey, response.getCredentials().getAccessKeySecret());
properties.put(PropertyKeyConst.SecurityToken, response.getCredentials().getSecurityToken());
// 主賬戶A RocketMQ控制台擷取:設定TCP接入域名,進入控制台的執行個體詳情頁面的TCP協定用戶端接入點區域檢視。
properties.put(PropertyKeyConst.NAMESRV_ADDR, "http://MQ_INST_*********.mq-internet-access.mq-internet.aliyuncs.com:80");
Consumer consumer = ONSFactory.createConsumer(properties);
consumer.subscribe("******", "*", new MessageListener() { //訂閱多個Tag。
public Action consume(Message message, ConsumeContext context) {
System.out.println("Receive: " + message);
return Action.CommitMessage;
}
});
consumer.start();
System.out.println("Consumer Started");
}
}
3、測試效果