概要
OCIにQueueサービス利用が開始されましたので簡単な検証を行ってみました
OCI Queue がすべての商用リージョンで利用可能に
https://blogs.oracle.com/oracle4engineer/post/oci-queue-ga
Oracle Cloud Infrastructure Documentation
Queue
https://docs.oracle.com/en-us/iaas/Content/queue/
検証方法
基本的な検証を行うため、以下の手順で実施しました
- キューの作成
- キューに入れるメッセージの作成
- メッセージのPut
- メッセージのGet
- DLQに移行したメッセージのGet
検証
- キューに入れるメッセージの作成
以下のようにメッセージを作成しました
queuemessage1.json
{
"messages": [
{
"content": "queuemessage1"
}
]
}
- メッセージのPut
OCI CLIを使用したHTTP形式を使用しました
Return Codeが200になればOKです
[user@linux]$ oci raw-request --http-method POST --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【QueueのOCID】/messages --request-body file://queuemessage1.json
{
"data": {
"messages": [
{
"expireAfter": "",
"id":
}
]
},
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,content-type,opc-client-info,opc-request-id",
"content-length": "80",
"content-type": "application/json",
"opc-request-id": ""
},
"status": "200 OK"
}
OCIコンソール上でもキューに1つのメッセージがPutされました
- メッセージのGet
以下のコマンドでget操作を行います
Putしたメッセージ"queuemessage1"が取得できました
[user@linux]$ oci raw-request --http-method GET --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【QueueのOCID】/messages?timeoutInSeconds=3
{
"data": {
"messages": [
{
"content": "queuemessage1",
"deliveryCount": 4,
"expireAfter": "",
"id": ,
"receipt": "【receipt】",
"visibleAfter": ""
}
]
},
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,content-type,opc-client-info,opc-request-id",
"content-length": "415",
"content-type": "application/json",
"opc-request-id": "【opc-request-id】"
},
"status": "200 OK"
}
30秒の表示タイムアウト内にもう一度GETリクエストを行うとメッセージは取得できません
[user@linux]$ oci raw-request --http-method GET --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【QueueのOCID】/messages?timeoutInSeconds=3
{
"data": {
"messages": []
},
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,content-type,opc-client-info,opc-request-id",
"content-length": "15",
"content-type": "application/json",
"opc-request-id": ""
},
"status": "200 OK"
}
30秒の表示タイムアウト後は再度メッセージが取得可能となります。
メッセージ処理が完了して再度利用されないようにするためには、以下のようにメッセージを削除します
Return Codeが204になれば削除完了です
[user@linux]$ oci raw-request --http-method DELETE --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【QueueのOCID】/messages/【receipt】
{
"data": "",
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,opc-client-info,opc-request-id",
"opc-request-id": "【opc-request-id】"
},
"status": "204 No Content"
}
DLQ内のメッセージをGetすることも可能です
Queue内の確認、表示可能なメッセージはない
[user@linux]$ oci raw-request --http-method GET --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【QueueのOCID】/messages?timeoutInSeconds=3
{
"data": {
"messages": []
},
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,content-type,opc-client-info,opc-request-id",
"content-length": "15",
"content-type": "application/json",
"opc-request-id": ""
},
"status": "200 OK"
}
DLQ内の確認、メッセージが表示される
[user@linux]$ oci raw-request --http-method GET --target-uri https://cell-1.queue.messaging.ap-tokyo-1.oci.oraclecloud.com/20210201/queues/【DLQのOCID】/messages?timeoutInSeconds=3
{
"data": {
"messages": [
{
"content": "queuemessage1",
"deliveryCount": 6,
"expireAfter": "",
"id": ,
"receipt": "",
"visibleAfter": ""
}
]
},
"headers": {
"access-control-allow-credentials": "true",
"access-control-allow-methods": "POST,PUT,GET,HEAD,DELETE,OPTIONS",
"access-control-allow-origin": "*",
"access-control-expose-headers": "access-control-allow-credentials,access-control-allow-methods,access-control-allow-origin,content-length,content-type,opc-client-info,opc-request-id",
"content-length": "421",
"content-type": "application/json",
"opc-request-id": ""
},
"status": "200 OK"
}