<CF_HOME>/cfusion/bin に移動します。
概要
メッセージキューを使用すると、システムの様々なコンポーネントが様々なコンポーネント間で非同期通信を行うことができます。メッセージキューは、メッセージを一時的に保存するバッファーを提供します。また、コンポーネントがキューに接続してメッセージを送信するためのエンドポイントとなります。メッセージには、リクエスト、応答、エラーメッセージの 3 種類があります。
メッセージは通常、別のサービスがそのメッセージを使用して何らかの操作を実行するまでキューに格納されます。
Amazon Simple Queue Service(Amazon SQS)は、アプリケーションまたはマイクロサービスで使用されるメッセージを格納するキューサービスです。Amazon SQS は、システムコンポーネントの切り離し、依存関係の軽減、スケーラビリティの確保に役立ちます。コンポーネントを切り離す理由は、システムの 1 つのコンポーネントが何らかの理由で応答しなくなっても、その他のコンポーネントが通常どおり動作するようにシステムを構築するためです。
SQS は、クラウドにおけるメッセージキューソフトウェアの実装を可能にします。メッセージキューは、コンピューターとアプリケーションコンポーネントの間でメッセージを受け渡すための分散システムを提供します。また、システムとシステム内のコンポーネントが独立性と自律性を保つ手段にもなります。
SQS を使用する場合、システムコンポーネントはキューバッファーを使用して互いにメッセージを送信します。これらのキューにより、コンポーネントは非同期通信を行って、同時実行をサポートしたり、高い可用性を維持したり、負荷やスパイクをより適切に処理したりすることができます。
概要
awssqs パッケージのインストール
Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、AWS SQS のモジュールはインストールされていません。最初の手順は、SQS パッケージを ColdFusion にインストールすることです。
注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。
SQS のパッケージは、awssqs という名前です。
awssqs パッケージをインストールするには、ColdFusion Administrator のパッケージマネージャーページを使用するか、以下の手順に従います。
-
-
次のコマンドを入力します。
- Windows:cfpm.bat
- Linux:cfpm.sh
-
コマンド install awssqs を入力します。
AWS SQS パッケージがインストールされるのを待ちます。
詳しくは、ColdFusion パッケージマネージャーを参照してください。
AWS SQS にアクセスするための資格情報の取得
AWS を操作する場合、資格情報を検証し、リクエストしているリソースにアクセスするための権限を持っているかどうかをチェックするために、AWS セキュリティ資格情報を指定します。
AWS は、セキュリティ資格情報を使用して、リクエストを認証および承認します。
AWS アクセスキー ID および AWS シークレットアクセスキーを取得する必要があります。詳しくは、アクセスキーを参照してください。
クラウドサービス資格情報および設定の追加
Adobe ColdFusion(2021 リリース)には、様々なクラウドサービスにアクセスするためのオブジェクトを作成するためにハンドルを提供するメソッド getCloudService() があります。
サービスハンドルのシンタックスを次に示します。
service=getCloudService(cloudCred,cloudConfig)
- cloudCred:クラウドサービスの資格情報を定義します。構造体または文字列です(資格情報エイリアスとも呼ばれます)。
- cloudConfig:クラウドサービス設定の詳細を定義します。構造体または文字列です(設定エイリアスとも呼ばれます)。
AWS 資格情報を獲得したら、次のいずれかの方法でこれらの資格情報を宣言する必要があります。その後でのみ、これらの資格情報を使用して SQS オブジェクトを作成でき、それからそのオブジェクトを使用して様々な SQSメソッドを呼び出すことができます。
ColdFusion Administrator
資格情報の設定
ColdFusion Administrator で、データとサービス/クラウド資格情報をクリックします。
エイリアスは、クラウドサービスおよびその設定の詳細の名前付き表現です。ColdFusion Administrator を使用して設定エイリアスを設定できます。
詳細を入力したら、「資格情報を追加」をクリックします。
設定オプションの設定
ColdFusion Administrator で、「データとサービス/クラウド設定」をクリックします。
設定エイリアス、ベンダー、サービスの名前など、次の詳細を入力します。
設定オプションを追加した後、さらにいくつかのオプションを追加する必要がある場合があります。次に表示される画面で追加できます。場合によって追加する必要があるオプションを次に示します。
- リクエスト設定
- クライアント設定
- プロキシ設定
- 再試行ポリシー
- 再試行条件
詳しくは、クラウド設定オプションを参照してください。
オブジェクトの作成
SQS 資格情報および設定オプションのエイリアスを作成したら、getCloudService API を使用してオブジェクトを作成し、次のコードを CFM に含めることができます。
sqsObject= getCloudService("sqsCred", "sqsConf")
Application.cfc
Application.cfc で SQS 資格情報および設定オプションを指定できます。次に例を示します。
component { this.name="AWS_STD_Queue"; void function onApplicationStart(){ application.awsCred = { "alias" : "aws_std_queue", "vendorName" : "AWS", "region" : "us-east-1", "secretAccessKey" : "xxxxxxxxxxxxxxxxx", "accessKeyId" : "xxxxxxxxxxxxxxxx" } application.snsConf = { "serviceName" : "SNS" } application.sqsConf ={ "serviceName" : "SQS" } } }
オブジェクトの作成
sqsObject = getCloudService(application.awsCred, application.sqsConf)
CFM ページ上
CFM ページでは、以下に示す 4 つの方法のいずれかで SQS 資格情報および設定オプションを指定できます。
資格情報エイリアスおよび設定エイリアス
SQS 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService
ハンドルでそれらのエイリアスを使用できます。
<cfscript> // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 sqs=getCloudService("awsCred","sqsConf") // 以下にコードを記述 ...........</cfscript>
資格情報エイリアスおよび設定オプションの構造体
<cfscript> // 資格情報エイリアスとサービス設定構造体を使用 sqsConf = { "alias":"sqsConf", "serviceName" : "SQS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } sqs= getCloudService("sqsCred", sqsConf) // 以下にコードを記述 .....................</cfscript>
設定エイリアスおよび資格情報の構造体
<cfscript> // 設定エイリアスとサービス資格情報構造体を使用 // SQS 資格情報 sqsCreds={ "vendorName":"AWS", "alias": "sqsCred", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access" } sqs= getCloudService(sqsCreds, "sqsConf") // 以下にコードを記述 .....................................</cfscript>
資格情報と設定オプションの両方の構造体
<cfscript> // クラウドの資格情報と設定の構造体を使用 sqsCred={ "vendorName":"AWS", "alias": "sqs_cred_alias", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access key" } sqsConf = { "alias":"sqs_conf_alias", "serviceName" : "SQS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } sqs = getCloudService(sqsCred, sqsConf ) // 以下にコードを記述 ...................................................................</cfscript>
Admin API
また、Admin API を使用して SQS 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。
メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を以下に示します。
資格情報の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 資格情報構造体を定義 credentialStruct={ "alias" : "CredSQS", "vendorName" : "AWS", "region" : "us-east-2", "secretAccessKey" : "secret access key", "accessKeyId" : "access key" } // 資格情報の credentialStruct を追加 try{ cloudObj.addCredential(credentialStruct) writeOutput("Credentials added successfully") } catch(any e){ writeDump(e) } </cfscript>
設定の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 設定構造体を定義 configStruct={ "alias":"ConfSQS", "serviceName":"SQS", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } // 設定の configStruct を追加 try{ cloudObj.addServiceConfig(configStruct) writeOutput("Configuration service added successfully") } catch(any e){ writeDump(e) } </cfscript>
CFSetup
CFSetup 設定ユーティリティを使用して SQS の資格情報と設定をセットアップすることもできます。
クラウド資格情報の追加
- add cloudcredential credentialAlias=sqscred accesskeyid=<access> secretaccesskey=<secret> region=ap-southeast-1 vendorname=AWS
資格情報の設定
- set cloudcredential sqscred secretaccesskey=awssecret
クラウド設定の追加
- add cloudconfiguration serviceName=SQS alias=sqsConfig
設定の設定
- set cloudconfiguration conf1 alias=conf2
SQSClient API
- SQSQueue createQueue(String queueName);
- SQSQueue createQueue(String queueName, Map queueAttributes);
- String getQueueUrl(String queueName);
- Struct listQueues();
- Struct listQueueTags(String queueUrl);
- Struct purgeQueue(String queueUrl);
- Struct deleteQueue(String queueUrl);
- Struct sendMessage(String queueUrl, Map message);
- Struct receiveMessage(String queueUrl, Map receiveMessageOptions);
- Struct deleteMessage(String queueUrl, Map message);
- Struct tagQueue(String queueUrl, Map tags);
- Struct untagQueue(String queueUrl, Map tags);
- Struct changeMessageVisibility(String queueUrl, Map message);
- Struct setQueueAttributes(String queueUrl, Map queueAttributes);
- Struct getQueueAttributes(String queueUrl, Map queueAttributes);
- Struct changeMessageVisibilityBatch(String queueUrl, List<Map> messages);
- Struct deleteMessageBatch(String queueUrl, List<Map> messages);
- Struct sendMessageBatch(String queueUrl, List<Map> messages);
- Struct listDeadLetterSourceQueues(String queueUrl);
- Struct editTags(String queueUrl, Map tags);
- Struct addPermission(String queueUrl, Map permission);
- Struct removePermission(String queueUrl, String permissionLabel);
- Struct listQueues(String queueNamePrefix);
- String getQueueArn(String queueUrl);
SQSQueue API
- public Struct listQueueTags();
- public Struct purge();
- Struct sendMessage(Map message);
- Struct receiveMessage(Map receiveMessageOptions);
- Struct deleteMessage(Map message);
- Struct tag(Map tags);
- Struct untag(Map tags);
- Struct getAttributes(Map attributes);
- Struct setAttributes(Map attributes);
- Struct sendMessageBatch(List<Map> messages);
- Struct deleteMessageBatch(List<Map> messages);
- Struct changeMessageVisibilityBatch(List<Map> messages);
- String getQueueUrl();
- Struct listDeadLetterSourceQueues();
- Struct editTags(Map tags);
- Struct changeMessageVisibility(Map message);
- Struct addPermission(Map permission);
- Struct removePermission(String permissionLabel);
- String getQueueArn();
キューの作成
この関数は、標準キューまたは FIFO キューを作成します。キューの作成時には、次のことに注意する必要があります。
- 属性 FifoQueue を指定しない場合、Amazon SQS では標準キューが作成されます。
- FIFO キューを作成する場合は、<QueueName>.fifo の命名規則を使用する必要があります。
- キューの作成時に属性の値を指定しない場合は、属性のデフォルト値がキューの作成に使用されます。
詳しくは、CreateQueue を参照してください。
シンタックス
createQueue(String queueName, Struct queueAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueName |
キューの名前。FIFO キューを作成する場合は、キュー名の末尾に .fifo 接尾辞を付ける必要があります。 キュー名は、大文字と小文字が区別されます。 |
文字列 |
はい |
queueAttributes |
文字列の構造体で、次の属性を含んでいます。
サーバー側の暗号化に関連する属性:
FIFO 関連の属性:
注意:キューを標準から FIFO キューに変更することはできません。また、その逆も同様です。 |
構造体 |
いいえ |
詳しくは、CreateQueue のパラメーターを参照してください。
例
標準キュー
<cfscript> cred={ "credentialAlias" : "alias", "vendorName" : "AWS", "region" : "us-east-2", "secretAccessKey" : "secret access", "accessKeyId" : "access key" } conf={ "serviceName"="SQS" } sqs=getCloudService(cred, conf) queueName="QueueOne" // 標準キュー myQueue=sqs.createQueue(queueName) try{ myQueue=sqs.createQueue(queueName) writeOutput("Standard queue created") } catch (any e){ writeDump(e) } </cfscript>
属性付きの標準キュー
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) queueName="MyQueue" // 新しい標準キューを作成 setQueueAttributesMetadata = { "attributes"={ "VisibilityTimeout"="10", "MessageRetentionPeriod"="100", "MaximumMessageSize"="1024", "DelaySeconds"="10", "ReceiveMessageWaitTimeSeconds"="20" } } // 標準キュー try{ myQueue=sqs.createQueue(queueName,setQueueAttributesMetadata) writeOutput("Queue with attributes created") } catch (any e){ writeDump(e) } </cfscript>
FIFO キュー
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) queueName="MyQueue.fifo" // FIFO キュー名の末尾には .fifo 接尾辞を付ける // FIFO キューを作成 setQueueAttributesMetadata = { "attributes"={ "FifoQueue":"true", // FIFO キューの場合、この属性は true "VisibilityTimeout"="10", "MessageRetentionPeriod"="100", "MaximumMessageSize"="1024", "DelaySeconds"="10", "ReceiveMessageWaitTimeSeconds"="20" } } // FIFO キュー try{ myQueue=sqs.createQueue(queueName,setQueueAttributesMetadata) writeOutput("FIFO queue with attributes created") } catch (any e){ writeDump(e) } </cfscript>
SSE が有効なキューの作成
キューを作成し、サーバー側の暗号化(SSE)を有効にします。SSE は、標準キューにも FIFO キューにも使用できます。
暗号化を強化するには、以下を使用できます。
- 顧客マスターキー(CMK)ID:SQS でメッセージのコンテンツを暗号化するためのキー。詳しくは、SQS のデータキーを参照してください。
- 顧客データキー再利用期間:SQS がデータキーを再利用してメッセージを暗号化または復号化できる期間(秒単位)。60~86400 の範囲の値が使用可能です。詳しくは、データキー再利用期間についてを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。このメソッドはキューオブジェクトを返す。myQueue = sqs.createQueue("QueueWithSSE"); setQueueAttributesMetadata = { "attributes"={ "KmsMasterKeyId"="arn:aws:kms:us-east-2:xxxxxxxxxxx:key/xxxxxxxxxxxx", "KmsDataKeyReusePeriodSeconds"="120" } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); KmsMasterKeyIdVal = myQueue.getAttributes({ "attributeNames"=["KmsMasterKeyId"] }) val = KmsMasterKeyIdVal["attributes"]; writeoutput(val["KmsMasterKeyId"]); </cfscript>
すべてのキューの一覧取得
この関数は、AWS アカウントのキューの一覧を取得します。
詳しくは、ListQueues を参照してください。
シンタックス
listQueues(queueNamePrefix)
パラメーター
パラメーター |
型 |
必須 |
---|---|---|
queueNamePrefix |
文字列 |
いいえ |
詳細については、リクエストパラメーターを参照してください。
現時点では、ListQueues メソッドでパラメーター maxResults および nextToken がサポートされていません。
例
<cfscript> // SQS でキューを作成 // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。 // このメソッドはキューオブジェクトを返す。writeoutput("Create queue in AWS</br>"); myQueue = sqs.createQueue("MyQueueWithAttrib") writeoutput("Listing all the queues in AWS<br>") writeDump(sqs.listQueues().queueUrls) writeOutput("The number of queues in the region is:") queueCount= ArrayLen(sqs.listQueues().queueUrls) writeOutput(queueCount) </cfscript>
キューの URL の取得
Amazon SQS キューの URL を取得します。
シンタックス
getQueueUrl(queueName)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueName |
URL を取得するキューの名前。 |
文字列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) qURL=sqs.GetQueueUrl("BatchQueue") writeDump(qURL) </cfscript>
キューの ARN の取得
SQS キューの Amazonリソース名(ARN)を取得します。
シンタックス
getQueueArn(String queueUrl)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
例
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) stdQueueObj = sqs.createQueue("stdQueueARN"); queueARN = stdQueueObj.getQueueArn(); writeoutput(queueARN) </cfscript>
キューのタグ付け
この関数は、指定された標準キューまたは FIFO キューにタグ(例:コスト配分)を追加します。タグの作成時には、次のことに注意する必要があります。
- 追加するタグは、大文字と小文字が区別されます。
- 新しいタグが既存のタグと同じキーを持つ場合は、既存のタグを上書きします。
詳しくは、TagQueue を参照してください。
シンタックス
tagQueue(String queueUrl, Struct tags)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
タグ付けするキューの URL。 |
文字列 |
はい |
map |
キューに追加するタグ。 |
構造体 |
はい |
詳しくは、TagQueue のパラメーターを参照してください。
例
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue("QueueTags") // キューの URL を取得 queueUrl=sqs.getQueueUrl("QueueTags") writeOutput("The queue url is: " & queueUrl) // タグを作成 queueTags={ "tags"={ "Product":"ColdFusion", "Version":"2021", "Build":"338001", "Date":"2020/10/28", "Location":"Adobe", "Place":"Bangalore" } } try{ queueTagResponse=sqs.tagQueue(queueUrl,queueTags) writeOutput(""&"Queue successfully tagged") writeDump(queueTagResponse) } catch(any e){ writeDump(e) } </cfscript>
キューオブジェクトの使用
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue("QueueTags") // キューの URL を取得 queueUrl=sqs.getQueueUrl("QueueTags") writeOutput("The queue url is: " & queueUrl) // タグを作成 queueTags={ "tags"={ "Product":"ColdFusion", "Version":"2021", "Build":"338001", "Date":"2020/10/28", "Location":"Adobe", "Place":"Bangalore" } } try{ queueTagResponse=myQueue.tag(queueTags) writeOutput(""&"Queue successfully tagged") writeDump(queueTagResponse) } catch(any e){ writeDump(e) } </cfscript>
キューのタグの一覧取得
指定されたキューのタグの一覧を取得します。
詳しくは、ListQueueTags を参照してください。
シンタックス
listQueueTags(queueURL)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
詳細については、リクエストパラメーターを参照してください。
例
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューをリストアップ queueList=sqs.listQueues() // 前の例で作成したキューの URL を取得 queueUrl=queueList.queueUrls[16] tagList=sqs.listQueueTags(queueUrl) writeOutput("List of tags in the queue:") writeDump(tagList.tags) </cfscript>
次の例では、キューオブジェクトを使用して、キュー内のタグのリストを表示します。ここでは、作成したキューにタグをいくつか追加しています。
<cfscript> sqs=getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue=sqs.createQueue("QueueTags") // キューにタグを追加 queueTags={ "tags"={ "Product":"ColdFusion", "Version":"2021", "Build":"338001", "Date":"2020/10/28", "Location":"Adobe" } } myQueue.tag(queueTags) // タグをリストアップ listTagResponse=myQueue.listQueueTags() writeDump(listTagResponse) </cfscript>
キューのタグ付け解除
タグのキーを使用して、キューからタグを削除できます。
詳しくは、UntagQueue を参照してください。
シンタックス
untagQueue(String queueUrl, Struct tags)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
map |
指定のキューから削除するタグの配列。 |
配列 |
はい |
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); //writeoutput("Create queue in AWS<br>"); myQueue = sqs.createQueue("Tagging_Queue"); //writeoutput("set Tag queue attributes response"); tagQueueMetadata = {"tags"= { "Product"="ColdFusion", "Environment"="Production" } }; // キューにタグ付け setQueueAttributesResponse = myQueue.tag(tagQueueMetadata); writeoutput(#myQueue.ListQueueTags().tags["Product"]#); writeoutput(#myQueue.ListQueueTags().tags["Environment"]#&"<br>"); untagQueueMetadata = {"tagKeys"=["Product","Environment"]}; // キューのタグ付け解除 untagQueueResponse = myQueue.untag(untagQueueMetadata); try{ writeoutput(#myQueue.ListQueueTags().tags["Environment"]#); } catch(any e){ writeoutput(e.Message); } </cfscript>
キューの削除
SQS のキューを削除します。詳しくは、DeleteQueue を参照してください。
キューが空でない場合でも、キューを削除できます。キュー内のメッセージを削除し、キューそのものは削除しない場合は、キューを破棄できます。
キューを削除すると、キュー内のすべてのメッセージが使用できなくなります。
シンタックス
deleteQueue(queueURL)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
例
<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf) // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。このメソッドはキューオブジェクトを返す。myQueue=sqs.createQueue("QueueForDeletion"); // キューの URL を取得 queueUrl=sqs.getQueueUrl("QueueForDeletion") try{ sqs.deleteQueue(queueUrl) writeOutput("Queue deleted successfully.") } catch(any e) { writeDump(e) } </cfscript>
キューの破棄
キューを削除せずにキューからすべてのメッセージを削除する場合は、キューを破棄できます。
詳しくは、PurgeQueue を参照してください。
シンタックス
purgeQueue(queueURL)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue("PurgeMessageQueue"); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"=dateTimeFormat(now()), "geospatial_data"="San Francisco", "signatures"="ADBE", "identifiers"="ColdFusion" } } // キューにメッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata) try{ sqs.purgeQueue(stdQueueUrl) writeOutput("Queue purged successfully.")} catch(any e) { writeDump(e) } </cfscript>
キューへのメッセージの送信
AWS 資格情報を指定して、既存のキューにメッセージを送信できます。詳しくは、SendMessage を参照してください。
シンタックス
sendMessage(String queueUrl, Struct message)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueUrl |
メッセージの送信先となるキューの URL。 |
文字列 |
はい |
messageAttributes |
SQS メッセージ属性のキーと値のペア。詳しくは、SQS メッセージ属性を参照してください。 |
構造体 |
いいえ |
messageBody |
キューに送信するメッセージ。 |
文字列 |
はい |
messageDeduplicationId |
FIFO キューにのみ適用されます。これは、メッセージの重複排除用のトークンです。 |
文字列 |
いいえ |
messageGroupId |
FIFO キューにのみ適用されます。これは、特定のメッセージグループのタグです。 |
文字列 |
いいえ |
messageSystemAttribute |
メッセージシステム属性のキーと値のペア。詳しくは、SQS メッセージシステム属性を参照してください。 |
構造体 |
いいえ |
詳しくは、SendMessage のリクエストパラメーターを参照してください。
例
例 1 - 標準キューへのメッセージの送信
<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf); // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。 // このメソッドはキューオブジェクトを返す。myQueue = sqs.createQueue("SimpleMessageQueue"); // キューオブジェクトを使用してキューにメッセージを送信message = {"messageBody"="This is a sample message."}; sendMessageResponse = myQueue.sendMessage(message); writedump(sendMessageResponse) // ステータスコードを表示 writeoutput(sendMessageResponse.sdkHttpResponse["statusCode"]); // 200 </cfscript>
例 2 - 追加パラメーターを指定した、標準キューへのメッセージの送信
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue("sendMessage"); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="San Francisco", "signatures"="ADBE", "identifiers"="ColdFusion" } } sendMessageResp = sqs.sendMessage(stdQueueUrl,sendMessageMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); // 200 </cfscript>
例 3 - FIFO キューへのメッセージの送信
<cfscript> try{ sqs = getCloudService(application.awsCred, application.sqsConf); queueAttributes = { "attributes" : {"FifoQueue" : "true"} } fifoQueue = sqs.createQueue("sendMessage.fifo", queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sampe message", "messageGroupId" ="12345", "messageDeduplicationId" ="123456", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="San Jose", "signatures"="ADBE", "identifiers"="ColdFusion" } }; // メッセージを送信 sendMessageResp = sqs.sendMessage(fifoQueueUrl,sendMessageMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); // 200 } catch(any e){ writeDump(e); } </cfscript>
属性付きメッセージの送信
メッセージ属性を使用して、構造化メタデータ(タイムスタンプ、地理空間データ、署名、識別子など)をメッセージに含めることができます。
詳しくは、Amazon SQS メッセージ属性を参照してください。
例
<cfscript> // Application.cfc で宣言した資格情報と設定から getCloudService を取得 sqs = getCloudService(application.awsCred, application.sqsConf) // この SQS サービスオブジェクトを使用して createQueue() でキューを作成。This method returns a queue object. //writeoutput("Create queue in AWS<br>"); myQueue = sqs.createQueue("MessageQueueWithAttribute"); // キューオブジェクトを使用してキューにメッセージを送信sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"=datetimeformat(now()), "geospatial_data"="Bangalore", "signatures"="ADBE", "identifiers"="ColdFusion" } }; sendMessageResponse = myQueue.sendMessage(sendMessageMetadata); writeoutput("message successfully sent with attribute"); writeDump(sendMessageResponse) </cfscript>
メッセージの受信
キューにメッセージを送信した後で、キューからメッセージを取得することができます。キューにメッセージを要求する場合、どのメッセージを取得するかは指定できません。その代わり、取得するメッセージの最大数(最大 10 個まで)を指定する必要があります。
詳しくは、メッセージの受信および削除を参照してください。
シンタックス
receiveMessage(String queueUrl, Map receiveMessageOptions)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueUrl |
メッセージの受信先となるキューの URL。 |
文字列 |
はい |
messageAttributeNames |
次のいずれかです。
|
構造体 |
いいえ |
maxNumberOfMessages |
返されるメッセージの最大数。有効な値は 1~10 です。 |
Integer |
いいえ |
receiveRequestAttemptId |
FIFO キューにのみ適用。 |
文字列 |
いいえ |
vVisibilityTimeout |
取得リクエストでメッセージが非表示になっている時間。 |
Integer |
いいえ |
waitTime |
キューに届くまでメッセージが待機する期間。 |
Integer |
いいえ |
詳しくは、リクエストパラメーターを参照してください。
例
例 1 - FIFO キュー内のメッセージの受信
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // FIFO キューの属性を定義 queueAttributes = { "attributes" : { "FifoQueue" : "true" } } fifoQueue = sqs.createQueue("sendMessage.fifo", queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageGroupId" ="12345", "messageDeduplicationId" ="123456", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="Bangalore", "signatures"="SG", "identifiers"="ColdFusion" } } // メッセージを送信 sqs.sendMessage(fifoQueueUrl,sendMessageMetadata) // メッセージ受信のメタデータを定義 receiveMessageMetadata = { "messageAttributeNames"="All" } try{ receiveMessageResp = sqs.receiveMessage(fifoQueueUrl,receiveMessageMetadata) writeOutput("Message received successfully") writeDump(receiveMessageResp) } catch (any e){ writeDump(e) } </cfscript>
例 2 - 標準キューへのメッセージの送信
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 stdQueue = sqs.createQueue("ReceiveMessageQueueNew"); // キューの URL を取得 stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="San Jose", "signatures"="SG", "identifiers"="ColdFusion" } } // メッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata); // メッセージ受信のメタデータを定義 receiveMessageMetadata = { "messageAttributeNames"="All" } try{ receiveMessageResp = sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata) writeOutput("Message received successfully") writeDump(receiveMessageResp) writeoutput(ArrayLen(receiveMessageResp.messages)>0) // TRUE } catch(any e){ writeDump(e) } </cfscript>
メッセージの削除
キューからメッセージを削除します。削除するメッセージを選択するには、 メッセージの ReceiptHandle を使用し ます。
詳しくは、DeleteMessage を参照してください。
シンタックス
deleteMessage(String queueUrl, Struct message)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
キューの URL。 |
文字列 |
はい |
receiptHandle |
削除するメッセージに関連付けられているレシートハンドル。 |
文字列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 stdQueue = sqs.createQueue("ReceiveMessageQueueNew"); // キューの URL を取得 stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="San Jose", "signatures"="SG", "identifiers"="ColdFusion" } } // メッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata) // メッセージを受信 // メッセージ受信のメタデータを定義 receiveMessageMetadata = { "messageAttributeNames"="All" } receiveMessageResp=sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata) // レシートハンドルを取得 receiptHandle={ "receiptHandle":receiveMessageResp.messages[1].receiptHandle } // メッセージを削除 try{ deleteMessageResponse=sqs.deleteMessage(stdQueueUrl,receiptHandle) writeOutput("Message deleted successfully") writeDump(deleteMessageResponse) } catch(any e){ writeDump(e) } </cfscript>
キューの属性の設定
1 つ以上のキュー属性の値を設定します。
詳しくは、SetQueueAttributes を参照してください。
シンタックス
setQueueAttributes(String queueUrl, Struct queueAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
属性の設定先となるキューの URL。 |
文字列 |
はい |
属性の値です |
次の属性のキーと値のペアです。
FIFO の属性:
サーバーサイド暗号化の属性:
|
構造体 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 sqs.createQueue("QueueAttributeDemo") // キューの URL を取得 qURL=sqs.getQueueUrl("QueueAttributeDemo") // キュー属性のメタデータを定義 setQueueAttributes = { "attributes"={ "VisibilityTimeout"="10", "MessageRetentionPeriod"="100", "MaximumMessageSize"="1024", "DelaySeconds"="10", "ReceiveMessageWaitTimeSeconds"="20" } } // キュー属性を設定 try{ queueAttributeResponse=sqs.setQueueAttributes(qURL,setQueueAttributes writeOutput("Queue attributes set successfully") writeDump(queueAttributeResponse) } catch(any e){ writeOutput("Unable to set queue attribute") writeDump(e) } </cfscript>
キューの属性の取得
指定されたキューの属性を取得します。
詳しくは、GetQueueAttributes を参照してください。
シンタックス
getQueueAttributes(String queueUrl, Struct queueAttributes)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
属性の取得先となるキューの URL。 |
文字列 |
はい |
attributeNames |
次のいずれかです。
SSE の属性:
FIFO の属性:
|
配列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 sqs.createQueue("QueueGetAttributeDemo") // キューの URL を取得 qURL=sqs.getQueueUrl("QueueGetAttributeDemo") // キュー属性のメタデータを定義 setQueueAttributes = { "attributes"={ "VisibilityTimeout"="10", "MessageRetentionPeriod"="100", "MaximumMessageSize"="1024", "DelaySeconds"="10", "ReceiveMessageWaitTimeSeconds"="20" } } // キュー属性を設定 sqs.setQueueAttributes(qURL,setQueueAttributes) // 属性取得のメタデータを定義 getQueueAttributesMetadata={ "attributeNames"=["All"] } try{ getAttributeResponse=sqs.getQueueAttributes(qURL,getQueueAttributesMetadata) writeOutput("Queue attributes are:") writeDump(getAttributeResponse.attributes) } catch(any e){ writeDump(e) } </cfscript>
メッセージの表示/非表示の変更
キュー内のメッセージの可視性タイムアウトを変更します。メッセージの可視性タイムアウトのデフォルト値は 30 秒です。指定できる値は 0 秒~12 時間です。
詳しくは、ChangeMessageVisibility を参照してください。
シンタックス
changeMessageVisibility(String queueUrl, Struct message)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
メッセージの可視性タイムアウトの変更先となるキューの URL。 |
文字列 |
はい |
receiptHandle |
可視性タイムアウトの変更対象となるメッセージのレシートハンドル。 |
文字列 |
はい |
visibilityTimeout |
新しいタイムアウト値(0~43200) |
Integer |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); stdQueue = sqs.createQueue("ChangeVisibilityDemo"); stdQueueUrl = stdQueue.getQueueUrl(); sendMessageMetadata = { "messageBody"="This is a sample message", "messageAttributes"={ "timestamps"="#dateTimeFormat(now())#", "geospatial_data"="London", "signatures"="CF", "identifiers"="ColdFusion" } } // キューにメッセージを送信 sqs.sendMessage(stdQueueUrl,sendMessageMetadata); // メッセージ受信のメタデータを定義 receiveMessageMetadata = { "messageAttributeNames"="All" }; // メッセージを受信 receiveMessageResp=sqs.receiveMessage(stdQueueUrl,receiveMessageMetadata); msgReceiptHandle= receiveMessageResp.messages[1].receiptHandle; // 可視性タイムアウト変更のメタデータを定義 changeVisibilityMetadata= { "visibilityTimeout":"100", // 100 秒 "receiptHandle":msgReceiptHandle } try{ changeVisibiltyResponse= sqs.changeMessageVisibility(stdQueueUrl,changeVisibilityMetadata) writeOutput("Message visibility timeout changed successfully") writeDump(changeVisibiltyResponse) writeoutput(changeVisibiltyResponse.sdkHttpResponse.statusCode) } catch(any e){ writeDump(e) } </cfscript>
メッセージの表示/非表示の一括変更
複数のメッセージの可視性タイムアウトを変更します。
詳しくは、ChangeMessageVisibilityBatch を参照してください。
シンタックス
changeMessageVisibilityBatch(String queueUrl, List<Map> messages)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
メッセージの表示/非表示の変更先となるキューの URL。 |
文字列 |
はい |
changeMessageVisibilityBatchMetadata |
可視性タイムアウトの変更対象となるメッセージのレシートハンドル。詳しくは、ChangeMessageVisibilityBatchRequestEntry を参照してください。 |
配列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqsObj = getCloudService(application.awsCred, application.sqsConf); stdQueueName = "stdBatchQueue" // キューを作成 stdQueueObj = sqsObj.createQueue(stdQueueName); // キューの URL を取得 stdQueueUrl = stdQueueObj.getQueueUrl() // メッセージ一括送信のメタデータを定義 sendMessageBatchMetadata = [ { "id":"1", "messageAttributes":{ "name":"name1", "type":"string", "value":"value1" }, "messageBody":"This is the body of batch 1" }, { "id":"2", "messageAttributes":{ "name":"name2", "type":"number", "value":24 }, "messageBody":"This is the body of batch 2" }, { "id":"3", "messageAttributes":{ "name":"name3", "type":"string", "value":"value2" }, "messageBody":"This is the body of batch 3" } ] // メッセージを一括送信 sendMessageBatchResponse = sqsObj.sendMessageBatch(stdQueueUrl, sendMessageBatchMetadata); // キュー内のメッセージを受信 receiveMessageMetadata = { "messageAttributeNames"="All", "maxNumberOfMessages"=5 } receiveMessageResp = sqsObj.receiveMessage(stdQueueUrl,receiveMessageMetadata); writeDump(receiveMessageResp) //break; // 可視性タイムアウト変更のメタデータを定義 changeMessageVisibilityBatchMetadata=[ { "id":receiveMessageResp.messages[1].messageId, "receiptHandle":receiveMessageResp.messages[1].receiptHandle, "visibilityTimeout":"20" } // { // "id":receiveMessageResp.messages[2].messageId, // "receiptHandle":receiveMessageResp.messages[2].receiptHandle, // "visibilityTimeout":"10" // } ] // 可視性タイムアウトを一括変更 changeMessageVisibilityBatchResponse=sqsObj.changeMessageVisibilityBatch(stdQueueUrl,changeMessageVisibilityBatchMetadata) writeDump(changeMessageVisibilityBatchResponse) </cfscript>
メッセージの一括送信
最大 10 個までのメッセージを指定のキューに一括送信します。これは、sendMessage API の一括処理バージョンです。
詳しくは、SendMessageBatch を参照してください。
シンタックス
sendMessageBatch(String queueUrl, List<Map> messages)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
メッセージの一括送信先となるキューの URL。 |
文字列 |
はい |
sendMessageBatchMetadata |
SendMessageBatchRequestEntry オブジェクトの配列。 |
配列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // メッセージの一括送信先となるキューの URL を取得myQueueUrl=sqs.listQueues().queueUrls[1] sendMessageBatchMetadata = [ { "id":"1", "messageAttributes":{ "name":"name1", "type":"string", "value":"value1" }, "messageBody":"This is the body of batch 1" }, { "id":"2", "messageAttributes":{ "name":"name2", "type":"number", "value":24 }, "messageBody":"This is the body of batch 2" } ] try{ sendMessageBatchResponse = sqs.sendMessageBatch(myQueueUrl, sendMessageBatchMetadata) writeOutput("Message batch sent successfully") writeDump(sendMessageBatchResponse) writeDump(sendMessageBatchResponse.successful) } catch (any e){ writeDump(e) } </cfscript>
メッセージの一括削除
キュー内の最大 10 個のメッセージを削除します。この関数は deleteMessage API の一括処理バージョンです。
詳しくは、DeleteMessageBatch を参照してください。
シンタックス
deleteMessageBatch(String queueUrl, List<Map> messages)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
メッセージの一括削除先となるキューの URL。 |
文字列 |
はい |
deleteMessageBatchMetadata |
削除するメッセージのレシートハンドルのリストです。DeleteMessageBatchRequestEntry オブジェクトの配列 です。 |
配列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
例 1 - 標準キューの場合
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf) // キューを作成 myQueue = sqs.createQueue("SendDeleteBatchMessage") // キューの URL を取得 qURL=myQueue.getQueueUrl() // ファイルをアップロード myImage = "image.PNG" sendMessageBatchMetadata = [ {"id"="1", "messageBody"="Delete Batch Message 1", "messageAttributes"={"date"=datetimeformat(now()), "myAtt12"="#toBinary(toBase64(myImage))#"}}, {"id"="2", "messageBody"="Delete Batch Message 2", "messageAttributes"={"send_date"=datetimeformat(now())}} ]; sendMessageResponse = sqs.sendMessageBatch(qURL, sendMessageBatchMetadata) // writeDump(sendMessageResponse) // break; // キュー内のメッセージを受信 receiveMessageMetadata = {"messageAttributeNames"="All","maxNumberOfMessages"=2} receiveMessageResponse = sqs.receiveMessage(qURL,receiveMessageMetadata); writeDump(receiveMessageResponse) //break; writeoutput("Delete message batch response"); msgReceiptHandle1= receiveMessageResponse.messages[1].receiptHandle; msgReceiptHandle2= receiveMessageResponse.messages[2].receiptHandle; deleteMessageBatchMetadata = [ {"id"="1", "receiptHandle"="#msgReceiptHandle1#"}, {"id"="2", "receiptHandle"="#msgReceiptHandle2#"} ]; deleteMessageResponse = sqs.deleteMessageBatch(qURL,deleteMessageBatchMetadata); writeDump(deleteMessageResponse) </cfscript>
例 2 - FIFO キューの場合
<cfscript> try{ sqs = getCloudService(application.awsCred, application.sqsConf); queueAttributes = { "attributes" : {"FifoQueue" : "true"} } fifoQueue = sqs.createQueue("sendBatchMessage.fifo", queueAttributes); fifoQueueUrl = fifoQueue.getQueueUrl(); sendMessageBatchMetadata = [ {"id"="1", "messageBody"="First Batch message","messageGroupId" ="720","messageDeduplicationId" ="23", "messageAttributes"={"myAtt1"="First"}}, {"id"="2", "messageBody"="Second Batch Message","messageGroupId" ="008","messageDeduplicationId" ="45", "messageAttributes"={"myAtt21"="Second"}} ]; sendMessageResp = sqs.sendMessageBatch(fifoQueueUrl,sendMessageBatchMetadata); writeoutput(sendMessageResp.sdkHttpResponse.statusCode); receiveMessageMetadata = {"messageAttributeNames"="All","maxNumberOfMessages"=2}; receiveMessageResp = sqs.receiveMessage(fifoQueueUrl,receiveMessageMetadata); msgReceiptHandle1= receiveMessageResp.messages[1].receiptHandle; msgReceiptHandle2= receiveMessageResp.messages[2].receiptHandle; deleteMessageBatchMetadata = [ {"id"="1", "receiptHandle"="#msgReceiptHandle1#"}, {"id"="2", "receiptHandle"="#msgReceiptHandle2#"} ]; deleteMsgReps= sqs.deleteMessageBatch(fifoQueueUrl,deleteMessageBatchMetadata); writeoutput(deleteMsgReps.sdkHttpResponse.statusCode); } catch(any e){ writeDump(e); }
権限の追加
権限がポリシーで定義されているユーザー、サービス、アカウントのキューに権限を追加します。
キューを作成すると、そのキューのフルコントロール権限を持ちます。その後、そのキューに対する権限を付与または拒否することができます。
詳しくは、AddPermission を参照してください。
シンタックス
addPermission(String queueUrl, Struct permission)
パラメーター
パラメーター |
説明 |
型 |
必須 |
---|---|---|---|
actions |
指定されたプリンシパルに対してクライアントが許可するアクション。有効な値は次のとおりです。
|
配列 |
はい |
awsAccountIds |
権限を付与されるプリンシパルの AWS アカウント番号。 |
配列 |
はい |
label |
設定する権限の一意の ID。 |
文字列 |
はい |
queueUrl |
キューの URL。 |
文字列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 sqs.createQueue("AddPermission"); // キューの URL を取得 queueUrl=sqs.getQueueUrl("AddPermission") // 権限構造体を定義 addPermissionStruct={ "actions" = ["SendMessage"], // メッセージ送信アクションを許可 "awsAccountIds" = ["xxxxxxxxxxxxx"], "label" = "label-cf-sqs" } try{ addPermissionResp = sqs.addPermission(queueUrl,addPermissionStruct) writeOutput("Permission added successfully") writeDump(addPermissionResp) } catch (any e){ writeDump(e) } </cfscript>
権限の削除
最初に権限の追加に使用されたラベルと一致するキューのポリシーで定義されているすべての権限を無効にします。
詳しくは、RemovePermission を参照してください。
シンタックス
removePermission(String queueUrl, String permissionLabel)
パラメータ
パラメータ |
説明 |
型 |
必須 |
---|---|---|---|
queueURL |
権限の削除先となるキューの URL。 |
文字列 |
はい |
permissionLabel |
削除する権限の一意の ID。 |
文字列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); // キューを作成 sqs.createQueue("RemovePermission"); // キューの URL を取得 queueUrl=sqs.getQueueUrl("AddPermission") // 権限構造体を定義 addPermissionStruct={ "actions" = ["SendMessage"], // メッセージ送信アクションを許可 "awsAccountIds" = ["xxxxxxxxxxxxx"], "label" = "label-cf-sqs" } sqs.addPermission(queueUrl,addPermissionStruct) // 権限削除の構造体 labelToRemove="label-cf-sqs" try{ removePermissionResp = sqs.removePermission(queueUrl,labelToRemove) writeOutput("Permission removed successfully") writeDump(removePermissionResp) } catch(any e){ writeDump(e) } </cfscript>
配信不能メッセージソースキューの一覧表示
SQS では、配信不能メッセージキューを使用すると、受信メッセージの最大数を超えたメッセージを配信不能メッセージキューに自動的に転送できます。
また、キューが存在しない場合や、キューやメッセージの長さが設定値を超えた場合にも、配信不能メッセージキューにメッセージが格納されます。
一言で言えば、配信不能メッセージキューは、失敗したメッセージを後でデバッグできるように処理します。
指定した回数以内にメッセージがコンシューマーで正常に処理されない場合、そのメッセージが SQS により配信不能メッセージキューに送信されるように、キューに再ドライブポリシーを設定できます。
詳しくは、Amazon SQS デッドレターキューを参照してください。
listDeadLetterSourceQueues API は、配信不能メッセージキューで RedrivePolicy 属性が設定されているキューのリストを返します。
詳しくは、ListDeadLetterSourceQueues を参照してください。
シンタックス
listDeadLetterSourceQueues(queueUrl)
パラメーター
パラメーター |
説明 |
型 |
必須 |
queueURL |
配信不能メッセージキューの URL。 |
文字列 |
はい |
詳しくは、リクエストパラメーターを参照してください。
例
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); setQueueAttributesMetadata = { "attributes"={ "FifoQueue" : "true" } } // FIFO キューを作成 myQueue = sqs.createQueue("FIFOQueue4DL.fifo",setQueueAttributesMetadata); deadLetterQueue = sqs.createQueue("dead_Letter_Queue.fifo",setQueueAttributesMetadata); queueUrl = myQueue.getQueueUrl(); getQueueAttributesMetadata = {"attributeNames":["All"]}; deadLetterQueueARN = deadLetterQueue.getAttributes(#getQueueAttributesMetadata#).attributes["QueueArn"]; redrivePolicy = { "maxReceiveCount" = 2, "deadLetterTargetArn" = "#deadLetterQueueARN#" } setQueueAttributesMetadata = { "attributes"={ "RedrivePolicy" = "#serializeJson(redrivePolicy)#" } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); getQueueAttributesMetadata = {"attributeNames"=["All"]}; getQueueAttributesResponse = myQueue.getAttributes(getQueueAttributesMetadata); redrivePolicyVal= #deserializeJson(getQueueAttributesResponse.attributes["RedrivePolicy"])#; writeoutput(#redrivePolicyVal.deadLetterTargetArn#); </cfscript>
キューでのロングポーリングの設定
SQS はポーリングベースのサービスで、アプリケーションは SQS キューからメッセージをポーリングします。SQS キューをポーリングし、空の応答が返された場合でも、課金されます。SQS のデフォルトのポーリングはショートポーリングで、キューが空か新しいメッセージで更新されている場合でも、待機時間なしで応答が送信されます。
ロングポーリングでは、空の応答と偽の空応答(使用可能なメッセージが応答に含まれていない場合)の数を除外します。
詳しくは、Amazon SQS ショートポーリングとロングポーリングを参照してください。
<cfscript> sqs = getCloudService(application.awsCred, application.sqsConf); myQueue = sqs.createQueue("longPolling"); writeoutput(myQueue.getQueueUrl()); queueUrl = myQueue.getQueueUrl(); setQueueAttributesMetadata = { "attributes"={ "ReceiveMessageWaitTimeSeconds"="20" } }; setQueueAttributesResponse = myQueue.setAttributes(setQueueAttributesMetadata); longPollingVal=myQueue.getAttributes({"attributeNames"=["ReceiveMessageWaitTimeSeconds"]}); writeoutput(longPollingVal.attributes["ReceiveMessageWaitTimeSeconds"]); </cfscript>