AMQP 1.0 nel bus di servizio di Microsoft Azure: operazioni basate su richiesta/risposta

Questo argomento offre un elenco delle operazioni basate su richiesta/risposta del bus di servizio di Microsoft Azure. Le informazioni sono basate sulla bozza di lavoro di AMQP Management versione 1.0.

Per una guida dettagliata al protocollo wire-level AMQP 1.0, che illustra come il bus di servizio è basato sulla specifica tecnica OASIS AMQP e la implementa, vedere Guida al protocollo AMQP 1.0 nel bus di servizio e in Hub eventi di Azure.

Concetti

Descrizione di entità

Una descrizione di entità fa riferimento a un oggetto classe QueueDescription, classe TopicDescription o classe SubscriptionDescription del bus di servizio.

Messaggio negoziato

Rappresenta un messaggio nel bus di servizio mappato a un messaggio AMQP. Per la definizione del mapping, consultare la Guida al protocollo AMQP nel bus di servizio.

Eseguire il collegamento a un nodo di gestione di entità

Tutte le operazioni descritte in questo documento seguono un modello richiesta/risposta, hanno come ambito un'entità e richiedono il collegamento a un nodo di gestione di entità.

Crea un collegamento al nodo di gestione per l'invio delle richieste.

requestLink = session.attach(     
role: SENDER,   
    target: { address: "<entity address>/$management" },   
    source: { address: ""<my request link unique address>" }   
)  

Crea un collegamento per la ricezione delle risposte dal nodo di gestione.

responseLink = session.attach(    
role: RECEIVER,   
    source: { address: "<entity address>/$management" }   
    target: { address: "<my response link unique address>" }   
)  

Trasferire un messaggio di richiesta

Trasferisce un messaggio di richiesta.

requestLink.sendTransfer(  
        Message(  
                properties: {  
                        message-id: <request id>,  
                        reply-to: "<my response link unique address>"  
                },  
                application-properties: {  
                        "operation" -> "<operation>",  
                },  
        )  

Ricevere un messaggio di risposta

Riceve il messaggio di risposta dal collegamento per le risposte.

responseMessage = responseLink.receiveTransfer()  

Il messaggio di risposta è nel modulo seguente:

Message(  
properties: {     
        correlation-id: <request id>  
    },  
    application-properties: {  
            "statusCode" -> <status code>,  
            "statusDescription" -> <status description>,  
           },         
)  

Indirizzo delle entità del bus di servizio

L'indirizzo delle entità del bus di servizio deve essere definito come segue:

Tipo di entità Indirizzo Esempio
coda <queue_name> “myQueue”

“site1/myQueue”
argomento <topic_name> “myTopic”

“site2/page1/myQueue”
sottoscrizione <topic_name>/Subscriptions/<subscription_name> “myTopic/Subscriptions/MySub”

Operazioni sui messaggi

Rinnovo del blocco del messaggio

Estende il blocco di un messaggio per il tempo specificato nella descrizione dell'entità.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:renew-lock
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
lock-tokens matrice di UUID Token di blocco del messaggio da rinnovare.

Risposta

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo.
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
expirations matrice di timestamp Nuova scadenza del token di blocco del messaggio corrispondente ai token di blocco della richiesta.

Visualizzazione del messaggio

Visualizza i messaggi senza blocco.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
from-sequence-number long Numero di sequenza da cui iniziare la visualizzazione.
message-count int Numero massimo di messaggi da visualizzare.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) se sono presenti altri messaggi

0xcc (nessun contenuto) se non sono presenti altri messaggi
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
del cloud al dispositivo elenco di mapping Elenco di messaggi in cui ogni mapping rappresenta un messaggio.

Il mapping che rappresenta un messaggio deve contenere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
message matrice di byte Messaggio con codifica in transito AMQP 1.0.

Pianificazione del messaggio

Pianifica i messaggi.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:schedule-message
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
del cloud al dispositivo elenco di mapping Elenco di messaggi in cui ogni mapping rappresenta un messaggio.

Il mapping che rappresenta un messaggio deve contenere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
message-id string amqpMessage.Properties.MessageId in formato stringa
session-id string amqpMessage.Properties.GroupId as string
partition-key string amqpMessage.MessageAnnotations.”x-opt-partition-key"
message matrice di byte Messaggio con codifica in transito AMQP 1.0.

Risposta

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo.
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
sequence-numbers matrice di long Numero di sequenza dei messaggi pianificati. Il numero di sequenza viene usato per l'annullamento.

Annullamento del messaggio pianificato

Annulla i messaggi pianificati.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:cancel-scheduled-message
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
sequence-numbers matrice di long Numero di sequenza dei messaggi pianificati da annullare.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo.
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
sequence-numbers matrice di long Numero di sequenza dei messaggi pianificati. Il numero di sequenza viene usato per l'annullamento.

Operazioni sulle sessioni

Rinnovo del blocco della sessione

Estende il blocco di un messaggio per il tempo specificato nella descrizione dell'entità.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:renew-session-lock
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
session-id string ID sessione.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) se sono presenti altri messaggi

0xcc (nessun contenuto) se non sono presenti altri messaggi
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
expiration timestamp Nuova scadenza.

Visualizzazione del messaggio di sessione

Visualizza i messaggi di sessione senza blocco.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
from-sequence-number long Numero di sequenza da cui iniziare la visualizzazione.
message-count int Numero massimo di messaggi da visualizzare.
session-id string ID sessione.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) se sono presenti altri messaggi

0xcc (nessun contenuto) se non sono presenti altri messaggi
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
del cloud al dispositivo elenco di mapping Elenco di messaggi in cui ogni mapping rappresenta un messaggio.

Il mapping che rappresenta un messaggio deve contenere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
message matrice di byte Messaggio con codifica in transito AMQP 1.0.

Impostazione dello stato della sessione

Imposta lo stato di una sessione.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
session-id string ID sessione.
session-state matrice di byte Dati binari opachi.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Recupero dello stato della sessione

Recupera lo stato di una sessione.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:get-session-state
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
session-id string ID sessione.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
session-state matrice di byte Dati binari opachi.

Enumerazione delle sessioni

Enumera le sessioni per un'entità di messaggistica.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:get-message-sessions
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
last-updated-time timestamp Filtro per includere solo le sessioni aggiornate dopo un determinato momento.
skip int Numero di sessioni da ignorare.
top int Numero massimo di sessioni.

Risposta

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) se sono presenti altri messaggi

0xcc (nessun contenuto) se non sono presenti altri messaggi
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
skip int Numero di sessioni ignorate se il codice di stato è 200.
sessions-ids matrice di stringhe Matrice di ID sessione se il codice di stato è 200.

Operazioni sulle regole

Aggiunta di una regola

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:add-rule
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
rule-name string Nome della regola, senza nomi di sottoscrizione e argomento.
rule-description map Descrizione della regola, come specificato nella sezione successiva.

Il mapping rule-description deve includere le voci seguenti, in cui sql-filter e correlation-filter si escludono a vicenda:

Chiave Tipo di valore Obbligatorio Contenuti del valore
sql-filter map sql-filter, come specificato nella sezione successiva.
correlation-filter map correlation-filter, come specificato nella sezione successiva.
sql-rule-action map sql-rule-action, come specificato nella sezione successiva.

Il mapping sql-filter deve includere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
expression string Espressione di filtro SQL.

Il mapping correlation-filter deve includere almeno una delle voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
correlation-id string No
message-id string No
to string No
reply-to string No
label string No
session-id string No
reply-to-session-id string No
content-type string No
properties map No Mapping alle proprietà della classe BrokeredMessage del bus di servizio.

Il mapping sql-rule-action deve includere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
expression string Espressione di azione SQL.

Risposta

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Rimozione di una regola

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:remove-rule
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
rule-name string Nome della regola, senza nomi di sottoscrizione e argomento.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Operazioni sui messaggi rinviati

Ricezione in base al numero di sequenza

Riceve i messaggi rinviati in base al numero di sequenza.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:receive-by-sequence-number
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
sequence-numbers matrice di long Numeri di sequenza.
receiver-settle-mode ubyte Modalità di finalizzazione del ricevitore, come indicata nella specifica di base AMQP versione 1.0.

Risposta

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Il corpo del messaggio di risposta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
del cloud al dispositivo elenco di mapping Elenco di messaggi in cui ogni mapping rappresenta un messaggio.

Il mapping che rappresenta un messaggio deve contenere le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
lock-token uuid Token di blocco se il valore di receiver-settle-mode è 1.
message matrice di byte Messaggio con codifica in transito AMQP 1.0.

Aggiornamento dello stato di ricezione

Aggiorna lo stato di ricezione dei messaggi rinviati.

Richiesta

Il messaggio di richiesta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
operation string com.microsoft:update-disposition
com.microsoft:server-timeout uint No Timeout del server per l'operazione, in millisecondi.

Il corpo del messaggio di richiesta deve essere costituito da una sezione amqp-value contenente un mapping con le voci seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
disposition-status string completed

abandoned

suspended
lock-tokens matrice di UUID Token di blocco dei messaggi per aggiornare lo stato di ricezione.
deadletter-reason string No Può essere impostato se lo stato di ricezione è suspended.
deadletter-description string No Può essere impostato se lo stato di ricezione è suspended.
properties-to-modify map No Elenco delle proprietà dei messaggi negoziati del bus di servizio da modificare.

Response

Il messaggio di risposta deve includere le proprietà di applicazione seguenti:

Chiave Tipo di valore Obbligatorio Contenuti del valore
statusCode int Codice di risposta HTTP [RFC2616]

200 (OK) in caso di esito positivo, altro valore in caso di esito negativo
statusDescription string No Descrizione dello stato.

Passaggi successivi

Per altre informazioni su AMQP e sul bus di servizio, visitare i collegamenti seguenti: