すべてのプロダクト
Search
ドキュメントセンター

:キュー操作

最終更新日:Mar 22, 2020

このドキュメントでは、CreateQueue、SendMessage、ReceiveMessage、DeleteMesssage、DeleteQueue など、MNS の Java SDK のサンプルコードを使用する方法を紹介します。

1. 事前準備

  1. Java SDK の最新バージョンをダウンロードし、aliyun-sdk-mns-samples フォルダに解凍します。
  2. フォルダ alien-idk-mns-samples の下にある maven プロジェクトをインポートします。
  3. ユーザフォルダー(/home/YOURNAME/)の下に、endpoint、AccessKeyID、AccessKeySecret で構成ファイルを作成します。
  4. ファイルサンプルを設定します。

    1. mns.accountendpoint=http://$accountid.mns.$region.aliyuncs.com
    2. mns.accesskeyid=$your_accesskeyid
    3. mns.accesskeysecret=$your_accesskeysecret

    注意

    • AK $your_accesskeyid $your_accesskeysecret の略称で、上の設定ファイルで Alibaba Cloud Service にアクセスするために使用されます。 AK はメインアカウントまたは RAM アカウントから使用できます。
    • mns.accountendpoint は、Alibaba Cloud Message Service のアクセスポイントです。Message Service コンソールの右上にある [エンドポイントの取得] ボタンをクリックすると取得できます。

2. キューの作成

サンプルコードでキューの作成方法を示します。

  1. public class CreateQueueDemo {
  2. public static void main(String[] args) {
  3. CloudAccount account = new CloudAccount("YourAccessId", "YourAccessKey", "MNSEndpoint");
  4. MNSClient client = account.getMNSClient();
  5. String queueName = "TestQueue";
  6. QueueMeta meta = new QueueMeta(); //デフォルト値で QueueMeta 属性を設定
  7. meta.setQueueName(queueName); // キュー名を設定
  8. meta.setPollingWaitSeconds(15);
  9. meta.setMaxMessageSize(2048L);
  10. try {
  11. CloudQueue queue = client.createQueue(meta);
  12. } catch (ClientException ce)
  13. {
  14. System.out.println("Something wrong with the network connection between client and MNS service."
  15. + "Please check your network and DNS availablity.");
  16. ce.printStackTrace();
  17. } catch (ServiceException ex)
  18. {
  19. se.printStackTrace();
  20. logger.error("MNS exception requestId:" + se.getRequestId(), se);
  21. if (se.getErrorCode() != null) {
  22. if (se.getErrorCode().equals("QueueNotExist"))
  23. {
  24. System.out.println("Queue is not exist.Please create before use");
  25. } else if (se.getErrorCode().equals("TimeExpired"))
  26. {
  27. System.out.println("The request is time expired. Please check your local machine timeclock");
  28. }
  29. }
  30. } catch (Exception e)
  31. {
  32. System.out.println("Unknown exception happened!");
  33. e.printStackTrace();
  34. }
  35. client.close(); //最後にクライアントを閉じる
  36. }
  37. }

キューの属性の詳細について、キュー関連の操作 を参照してください。

MNS サービスのエラーコードの詳細について、エラーコード を参照してください。

3. メッセージの送信

下記のコードで、キューにメッセージを送信します。

  1. public class ProducerDemo {
  2. public static void main(String[] args) {
  3. CloudAccount account = new CloudAccount("YourAccessId", "YourAccessKey", "MNSEndpoint");
  4. MNSClient client = account.getMNSClient();
  5. try {
  6. CloudQueue queue = client.getQueueRef("TestQueue");
  7. Message message = new Message();
  8. message.setMessageBody("I am test message ");
  9. Message putMsg = queue.putMessage(message);
  10. System.out.println("Send message id is: " + putMsg.getMessageId());
  11. } catch (ClientException ce)
  12. {
  13. System.out.println("Something wrong with the network connection between client and MNS service."
  14. + "Please check your network and DNS availablity.");
  15. ce.printStackTrace();
  16. } catch (ServiceException ex)
  17. {
  18. se.printStackTrace();
  19. logger.error("MNS exception requestId:" + se.getRequestId(), se);
  20. if (se.getErrorCode() != null) {
  21. if (se.getErrorCode().equals("QueueNotExist"))
  22. {
  23. System.out.println("Queue is not exist.Please create before use");
  24. } else if (se.getErrorCode().equals("TimeExpired"))
  25. {
  26. System.out.println("The request is time expired. Please check your local machine timeclock");
  27. }
  28. }
  29. } catch (Exception e)
  30. {
  31. System.out.println("Unknown exception happened!");
  32. e.printStackTrace();
  33. }
  34. client.close();
  35. }
  36. }

MNS サービスのエラーコードの詳細について、エラーコード を参照してください。

4. メッセージの受信と削除

手順 3 で送信したメッセージを受信し、削除します。

  1. public class ConsumerDemo {
  2. public static void main(String[] args) {
  3. CloudAccount account = new CloudAccount("YourAccessId", "YourAccessKey", "MNSEndpoint");
  4. MNSClient client = account.getMNSClient();
  5. try{
  6. CloudQueue queue = client.getQueueRef("TestQueue");
  7. Message popMsg = queue.popMessage();
  8. if (popMsg != null){
  9. System.out.println("message handle: " + popMsg.getReceiptHandle());
  10. System.out.println("message body: " + popMsg.getMessageBodyAsString());
  11. System.out.println("message id: " + popMsg.getMessageId());
  12. System.out.println("message dequeue count:" + popMsg.getDequeueCount());
  13. //受信したメッセージを削除
  14. queue.deleteMessage(popMsg.getReceiptHandle());
  15. System.out.println("delete message successfully.\n");
  16. }
  17. else{
  18. System.out.println("message not exist in TestQueue.\n");
  19. }
  20. } catch (ClientException ce)
  21. {
  22. System.out.println("Something wrong with the network connection between client and MNS service."
  23. + "Please check your network and DNS availablity.");
  24. ce.printStackTrace();
  25. } catch (ServiceException se)
  26. {
  27. se.printStackTrace();
  28. logger.error("MNS exception requestId:" + se.getRequestId(), se);
  29. if (se.getErrorCode() != null) {
  30. if (se.getErrorCode().equals("QueueNotExist"))
  31. {
  32. System.out.println("Queue is not exist.Please create before use");
  33. } else if (se.getErrorCode().equals("TimeExpired"))
  34. {
  35. System.out.println("The request is time expired. Please check your local machine timeclock");
  36. }
  37. }
  38. } catch (Exception e)
  39. {
  40. System.out.println("Unknown exception happened!");
  41. e.printStackTrace();
  42. }
  43. client.close();
  44. }
  45. }

MNS サービスのエラーコードの詳細について、エラーコード を参照してください。

5. キューの削除

  1. public class DeleteQueueDemo {
  2. public static void main(String[] args) {
  3. CloudAccount account = new CloudAccount("YourAccessId", "YourAccessKey", "MNSEndpoint");
  4. MNSClient client = account.getMNSClient();
  5. try{
  6. CloudQueue queue = client.getQueueRef("TestQueue");
  7. queue.delete();
  8. } catch (ClientException ce)
  9. {
  10. System.out.println("Something wrong with the network connection between client and MNS service."
  11. + "Please check your network and DNS availablity.");
  12. ce.printStackTrace();
  13. } catch (ServiceException se)
  14. {
  15. se.printStackTrace();
  16. } catch (Exception e)
  17. {
  18. System.out.println("Unknown exception happened!");
  19. e.printStackTrace();
  20. }
  21. client.close();
  22. }
  23. }