メッセージの送信

Service Bus キューまたはトピックにメッセージを送信します。

依頼

方式 要求 URI HTTP バージョン
投稿 https://{serviceNamespace}.servicebus.windows.net/{queuePath|topicPath}/messages HTTP/1.1

要求ヘッダー

次の表では、必須の要求ヘッダーと省略可能な要求ヘッダーについて説明します。 一覧表示されているプロパティに加えて、ヘッダーにはカスタム プロパティを含めることができます。 例を参照してください。

要求ヘッダー 形容
Authorization 次のいずれかのトークン値を指定します。
  • Microsoft Entra JSON Web トークン (JWT) トークン。
    例: Authorization: Bearer <Azure AD JWT token>.
    Microsoft Entra トークンの生成の詳細については、「アプリケーション からの認証」を参照してください。
  • SAS トークン。
    例: Authorization: SharedAccessSignature sr=<NAMESPACE NAME>.servicebus.windows.net&sig=<SHARED ACCESS KEY>&se=<TOKEN EXPIRY INSTANT>&skn=<SHARED KEY NAME>.
    SAS トークンの生成の詳細については、「Shared Access Signature トークン の生成」および「SAS トークン の生成」を参照してください。
Content-Type 投稿されたエンティティ本文 (メッセージ ペイロード) に適切なコンテンツ タイプを設定します。
BrokerProperties JSON でエンコードされた一連の BrokeredMessage プロパティ。
x-ms-retrypolicy (省略可能)一時的なエラーが発生したときに送信操作の自動再試行を無効にするには、NoRetry に設定します。

注

2種類のカスタムヘッダーは受け入れられていますが、カスタムプロパティとしては提供されません。 サービスがプロトコル使用のために予約した名前の集合のいずれかと一致するヘッダーは削除され、その一致は大文字を区別しません。 リテラル文字列 null の値を持つヘッダーもドロップされるので、カスタムプロパティが届かない場合は、最初に送った値を確認して null以外のものを送ってください。 それ以外の場合は、名前が予約済みヘッダーと衝突して再送信してください。

要求本文

要求本文はメッセージ ペイロードです。

HTTPS以外のプロトコルでメッセージを受信する場合、メッセージ本体はシリアライズされなければなりません。例えば、XML System.Runtime.Serialization.DataContractSerializerで行われます。 例えば:

MemoryStream ms = new MemoryStream();  
DataContractSerializer serializer = new DataContractSerializer(typeof(string));  
serializer.WriteObject(ms, "This is a message.");  
byte[] body = ms.ToArray();

上記のコードでは、次のメッセージ本文が生成されます。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">This is a message.</string>  

次のコードを使用して、メッセージを受信して処理できます。

BrokeredMessage message = queueClient.Receive();  
string body = message.GetBody<string>(new DataContractSerializer(typeof(string)));  

応答

応答には、HTTP 状態コードと一連の応答ヘッダーが含まれます。

応答コード

Code 形容
201 メッセージがキューまたはトピックに正常に送信されました。
400 要求が正しくありません。
401 承認エラー。
403 クォータを超えたか、メッセージが大きすぎます。
404 リクエストされたアドレスにはキューやトピックがホストされません。
410 指定されたキューまたはトピックが存在しません。
500 内部エラー。

状態コードの詳細については、「状態コードとエラー コードの」を参照してください。

注

401 Unauthorized 応答を受け取った場合は、Authorization ヘッダーの SAS トークンが正しく構築され、署名され、URL エンコードされており、Service Bus エンティティの URI と正確に一致していることを確認します。

応答ヘッダー

応答ヘッダー 形容
Content-Type application/xml; charset=utf-8 送りがうまくいくことを祈る。 応答本文は空です。

応答本文

何一つ。

例

次の HTTP 要求は、キューまたはトピックにメッセージを送信します。 メッセージには、次のプロパティがあります。

Label: "M1"  
TimeToLive: 10 seconds  
State: Active  
Message body: "This is a message."  

BrokeredPropertiesに加えて、メッセージには次のカスタム プロパティが含まれます:Priority=High と Customer="12345,ABC"。

POST https://your-namespace.servicebus.windows.net/HttpClientSampleQueue/messages?timeout=60 HTTP/1.1  
Authorization: SharedAccessSignature sr=your-namespace&sig=Fg8yUyR4MOmXfHfj55f5hY4jGb8x2Yc%2b3%2fULKZYxKZk%3d&se=1404256819&skn=RootManageSharedAccessKey  
BrokerProperties: {"Label":"M1","State":"Active","TimeToLive":10}  
Priority: High  
Customer: 12345,ABC  
Content-Type: text/plain
Host: your-namespace.servicebus.windows.net  
Content-Length: 18  
Expect: 100-continue  
  
This is a message.  

Service Bus は、次の応答を返します。

HTTP/1.1 201 Created  
Transfer-Encoding: chunked  
Content-Type: application/xml; charset=utf-8  
Server: Microsoft-HTTPAPI/2.0  
Date: Tue, 01 Jul 2014 23:00:22 GMT  
  
0