Code e argomenti partizionatiPartitioned queues and topics

Il bus di servizio di Azure usa più broker messaggi per elaborare i messaggi e più archivi di messaggistica per archiviarli.Azure Service Bus employs multiple message brokers to process messages and multiple messaging stores to store messages. Una coda o un argomento convenzionale è gestito da un singolo broker messaggi e archiviato in un archivio di messaggistica.A conventional queue or topic is handled by a single message broker and stored in one messaging store. Le partizioni del bus di servizio consentono il partizionamento di code e argomenti, o entità di messaggistica, tra più broker messaggi e archivi di messaggistica.Service Bus partitions enable queues and topics, or messaging entities, to be partitioned across multiple message brokers and messaging stores. Questo significa che la velocità effettiva complessiva di un'entità partizionata non è più limitata dalle prestazioni di un singolo broker messaggi o archivio di messaggistica.This means that the overall throughput of a partitioned entity is no longer limited by the performance of a single message broker or messaging store. Inoltre, un'interruzione temporanea dell'alimentazione di un archivio di messaggistica non determina la mancanza di disponibilità di una coda o di un argomento partizionato.In addition, a temporary outage of a messaging store does not render a partitioned queue or topic unavailable. Le code e gli argomenti partizionati possono contenere tutte le funzionalità avanzate del bus di servizio, ad esempio il supporto delle transazioni e delle sessioni.Partitioned queues and topics can contain all advanced Service Bus features, such as support for transactions and sessions.

Per informazioni sugli elementi interni del bus di servizio, vedere l'articolo Architettura del bus di servizio.For information about Service Bus internals, see the Service Bus architecture article.

Il partizionamento è abilitato per impostazione predefinita al momento della creazione dell'entità in tutte le code e tutti gli argomenti della messaggistica sia Standard che Premium.Partitioning is enabled by default at entity creation on all queues and topics in both Standard and Premium messaging. È possibile creare entità di livello messaggistica Standard senza il partizionamento, ma le code e gli argomenti in uno spazio dei nomi Premium vengono sempre partizionati. Questa opzione non può essere disabilitata.You can create Standard messaging tier entities without partitioning, but queues and topics in a Premium namespace are always partitioned; this option cannot be disabled.

Non è possibile modificare l'opzione di partizionamento su una coda o un argomento esistente nei livelli Standard o Premium. L'opzione può essere impostata solo in fase di creazione dell'entità.It is not possible to change the partitioning option on an existing queue or topic in either Standard or Premium tiers, you can only set the option when you create the entity.

FunzionamentoHow it works

Ogni coda o argomento partizionato è costituito da più frammenti.Each partitioned queue or topic consists of multiple fragments. Ogni frammento viene memorizzato in un archivio di messaggistica differente e gestito da un broker messaggi diverso.Each fragment is stored in a different messaging store and handled by a different message broker. Quando un messaggio viene inviato a una coda o a un argomento partizionato, il bus di servizio assegna il messaggio a uno dei frammenti.When a message is sent to a partitioned queue or topic, Service Bus assigns the message to one of the fragments. La selezione viene eseguita in modo casuale dal bus di servizio o tramite una chiave di partizione che può essere specificata dal mittente.The selection is done randomly by Service Bus or by using a partition key that the sender can specify.

Quando un client vuole ricevere un messaggio da una coda partizionata o da una sottoscrizione a un argomento partizionato, il bus di servizio esegue query su tutti i frammenti dei messaggi, quindi restituisce al ricevitore il primo messaggio ottenuto dagli archivi di messaggistica.When a client wants to receive a message from a partitioned queue, or from a subscription to a partitioned topic, Service Bus queries all fragments for messages, then returns the first message that is obtained from any of the messaging stores to the receiver. Il bus di servizio memorizza nella cache gli altri messaggi e li restituisce quando riceve altre richieste.Service Bus caches the other messages and returns them when it receives additional receive requests. Un client destinatario non è a conoscenza del partizionamento; il comportamento verso il client di una coda o un argomento partizionato (ad esempio lettura, completamento, rinvio, non recapitabilità, prelettura) è identico a quello di un'entità normale.A receiving client is not aware of the partitioning; the client-facing behavior of a partitioned queue or topic (for example, read, complete, defer, deadletter, prefetching) is identical to the behavior of a regular entity.

I messaggi a una coda o a un argomento partizionato non presentano costi aggiuntivi, né in invio né in ricezione.There is no additional cost when sending a message to, or receiving a message from, a partitioned queue or topic.

Abilitare il partizionamentoEnable partitioning

Per usare le code e gli argomenti partizionati con il bus di servizio di Azure, usare Azure SDK 2.2 o versione successiva oppure specificare api-version=2013-10 o una versione successiva nelle richieste HTTP.To use partitioned queues and topics with Azure Service Bus, use the Azure SDK version 2.2 or later, or specify api-version=2013-10 or later in your HTTP requests.

StandardStandard

A livello di messaggistica Standard, è possibile creare code e argomenti del bus di servizio in dimensioni di 1, 2, 3, 4 o 5 GB (il valore predefinito è 1 GB).In the Standard messaging tier, you can create Service Bus queues and topics in 1, 2, 3, 4, or 5 GB sizes (the default is 1 GB). Con il partizionamento abilitato, il bus di servizio crea 16 copie (16 partizioni) per ogni GB specificato.With partitioning enabled, Service Bus creates 16 copies (16 partitions) of the entity for each GB you specify. Di conseguenza, se si crea una coda con dimensioni pari a 5 GB, con 16 partizioni le dimensioni massime della coda diventano di 80 GB (5 * 16).As such, if you create a queue that's 5 GB in size, with 16 partitions the maximum queue size becomes (5 * 16) = 80 GB. È possibile vedere le dimensioni massime della coda o dell'argomento partizionato esaminando la voce corrispondente nel portale di Azure, nel pannello Panoramica relativo all'entità.You can see the maximum size of your partitioned queue or topic by looking at its entry on the Azure portal, in the Overview blade for that entity.

PremiumPremium

Nello spazio dei nomi di livello Premium, è possibile creare code e argomenti del bus di servizio in dimensioni di 1, 2, 3, 4, 5, 10, 20, 40 o 80 GB (il valore predefinito è 1 GB).In a Premium tier namespace, you can create Service Bus queues and topics in 1, 2, 3, 4, 5, 10, 20, 40, or 80 GB sizes (the default is 1 GB). Con il partizionamento abilitato per impostazione predefinita, il bus di servizio crea due partizioni per ogni entità.With partitioning enabled by default, Service Bus creates two partitions per entity. È possibile vedere le dimensioni massime della coda o dell'argomento partizionato esaminando la voce corrispondente nel portale di Azure, nel pannello Panoramica relativo all'entità.You can see the maximum size of your partitioned queue or topic by looking at its entry on the Azure portal, in the Overview blade for that entity.

Per altre informazioni sul partizionamento nel livello di messaggistica Premium, vedere Livelli di messaggistica Standard e Premium del bus di servizio.For more information about partitioning in the Premium messaging tier, see Service Bus Premium and Standard messaging tiers.

Creare una tabella partizionataCreate a partitioned entity

Sono disponibili vari modi per creare una coda o un argomento partizionato.There are several ways to create a partitioned queue or topic. Quando si crea la coda o l'argomento dalla propria applicazione, è possibile abilitare il partizionamento per la coda o l'argomento impostando, rispettivamente, la proprietà QueueDescription.EnablePartitioning o TopicDescription.EnablePartitioning su true.When you create the queue or topic from your application, you can enable partitioning for the queue or topic by respectively setting the QueueDescription.EnablePartitioning or TopicDescription.EnablePartitioning property to true. Queste proprietà devono essere impostate al momento della creazione della coda o dell'argomento.These properties must be set at the time the queue or topic is created. Come detto in precedenza, non è possibile modificare queste proprietà in una coda o in un argomento esistente.As stated previously, it is not possible to change these properties on an existing queue or topic. Ad esempio:For example:

// Create partitioned topic
NamespaceManager ns = NamespaceManager.CreateFromConnectionString(myConnectionString);
TopicDescription td = new TopicDescription(TopicName);
td.EnablePartitioning = true;
ns.CreateTopic(td);

È possibile, in alternativa, creare una coda o un argomento partizionato nel portale di Azure o in Visual Studio.Alternatively, you can create a partitioned queue or topic in the Azure portal or in Visual Studio. Quando si crea una coda o un argomento nel portale, l'opzione Abilita partizionamento nella finestra di dialogo Crea della coda o dell'argomento è selezionata per impostazione predefinita.When you create a queue or topic in the portal, the Enable partitioning option in the queue or topic Create dialog box is checked by default. L'opzione può essere disabilitata solo in un'entità di livello Standard. Nel livello Premium il partizionamento è sempre abilitato.You can only disable this option in a Standard tier entity; in the Premium tier partitioning is always enabled. In Visual Studio selezionare la casella di controllo Abilita partizionamento nella finestra di dialogo Nuova coda o Nuovo argomento.In Visual Studio, click the Enable Partitioning checkbox in the New Queue or New Topic dialog box.

Uso delle chiavi di partizioneUse of partition keys

Quando un messaggio viene accodato in una coda o in un argomento partizionato, il bus di servizio controlla la presenza di una chiave di partizione.When a message is enqueued into a partitioned queue or topic, Service Bus checks for the presence of a partition key. Se ne trova una, seleziona il frammento in base a tale chiave.If it finds one, it selects the fragment based on that key. Se invece non trova alcuna chiave di partizione, seleziona il frammento in base a un algoritmo interno.If it does not find a partition key, it selects the fragment based on an internal algorithm.

Uso di una chiave di partizioneUsing a partition key

In alcuni scenari, ad esempio le sessioni o le transazioni, i messaggi devono essere archiviati in un frammento specifico.Some scenarios, such as sessions or transactions, require messages to be stored in a specific fragment. Tutti questi scenari richiedono l'uso di una chiave di partizione.All these scenarios require the use of a partition key. Tutti i messaggi che usano la stessa chiave di partizione vengono assegnati allo stesso frammento.All messages that use the same partition key are assigned to the same fragment. Se il frammento è temporaneamente non disponibile, il bus di servizio restituisce un errore.If the fragment is temporarily unavailable, Service Bus returns an error.

In base allo scenario vengono usate come chiave di partizione proprietà dei messaggi diverse:Depending on the scenario, different message properties are used as a partition key:

SessionId: se per un messaggio è impostata la proprietà BrokeredMessage.SessionId, il bus di servizio usa questa proprietà come la chiave di partizione.SessionId: If a message has the BrokeredMessage.SessionId property set, then Service Bus uses this property as the partition key. In questo modo, tutti i messaggi appartenenti alla stessa sessione vengono gestiti dallo stesso broker messaggi.This way, all messages that belong to the same session are handled by the same message broker. Questo consente a l bus di servizio di garantire l'ordinamento dei messaggi così come la coerenza degli stati della sessione.This enables Service Bus to guarantee message ordering as well as the consistency of session states.

PartitionKey: se per un messaggio è impostata la proprietà BrokeredMessage.PartitionKey, ma non la proprietà BrokeredMessage.SessionId, il bus di servizio usa la proprietà PartitionKey come la chiave di partizione.PartitionKey: If a message has the BrokeredMessage.PartitionKey property but not the BrokeredMessage.SessionId property set, then Service Bus uses the PartitionKey property as the partition key. Se per il messaggio sono impostate entrambe le proprietà SessionId e PartitionKey, queste devono avere un valore identico.If the message has both the SessionId and the PartitionKey properties set, both properties must be identical. Se la proprietà PartitionKey è impostata su un valore diverso rispetto a quello della proprietà SessionId, il bus di servizio restituisce un'eccezione di operazione non valida.If the PartitionKey property is set to a different value than the SessionId property, Service Bus returns an invalid operation exception. La proprietà PartitionKey deve essere usata se un mittente invia messaggi transazionali non sono in grado di riconoscere le sessioni.The PartitionKey property should be used if a sender sends non-session aware transactional messages. La chiave di partizione assicura che tutti i messaggi inviati all'interno di una transazione vengano gestiti dallo stesso broker di messaggistica.The partition key ensures that all messages that are sent within a transaction are handled by the same messaging broker.

MessageId: se per la coda o l'argomento la proprietà QueueDescription.RequiresDuplicateDetection è impostata su true e la proprietà BrokeredMessage.SessionId o BrokeredMessage.PartitionKey non è impostata, la proprietà BrokeredMessage.MessageId viene usata come chiave di partizione.MessageId: If the queue or topic has the QueueDescription.RequiresDuplicateDetection property set to true and the BrokeredMessage.SessionId or BrokeredMessage.PartitionKey properties are not set, then the BrokeredMessage.MessageId property serves as the partition key. (tenere presente che le librerie di Microsoft .NET e AMQP assegnano automaticamente un ID messaggio, se questo non viene assegnato dall'applicazione mittente). In questo caso tutte le copie dello stesso messaggio vengono gestite dallo stesso broker messaggi.(Note that the Microsoft .NET and AMQP libraries automatically assign a message ID if the sending application does not.) In this case, all copies of the same message are handled by the same message broker. Questo consente al bus di servizio di rilevare ed eliminare i messaggi duplicati.This enables Service Bus to detect and eliminate duplicate messages. Se la proprietà QueueDescription.RequiresDuplicateDetection non è impostata su true, il bus di servizio non considera la proprietà MessageId come chiave di partizione.If the QueueDescription.RequiresDuplicateDetection property is not set to true, Service Bus does not consider the MessageId property as a partition key.

Senza l'uso di una chiave di partizioneNot using a partition key

In assenza di una chiave di partizione, il bus di servizio distribuisce, con un'alternanza di tipo round robin, i messaggi ai frammenti della coda o dell'argomento partizionato.In the absence of a partition key, Service Bus distributes messages in a round-robin fashion to all the fragments of the partitioned queue or topic. Se il frammento scelto non è disponibile, il bus di servizio assegna il messaggio a un altro frammento.If the chosen fragment is not available, Service Bus assigns the message to a different fragment. In questo modo, l'operazione di invio viene completata correttamente indipendentemente dalla disponibilità o meno di un archivio di messaggistica.This way, the send operation succeeds despite the temporary unavailability of a messaging store. Non si otterrà tuttavia l'ordinamento garantito fornito da una chiave di partizione.However, you will not achieve the guaranteed ordering that a partition key provides.

Per un'analisi più approfondita del compromesso tra disponibilità (nessuna chiave di partizione) e coerenza (uso di una chiave di partizione), vedere questo articolo.For a more in-depth discussion of the tradeoff between availability (no partition key) and consistency (using a partition key), see this article. Queste informazioni si applicano ugualmente alle entità del bus di servizio partizionate.This information applies equally to partitioned Service Bus entities.

Per concedere al bus di servizio tempo sufficiente per l'accodamento del messaggio in un frammento diverso, il valore MessagingFactorySettings.OperationTimeout specificato dal client che invia il messaggio deve essere maggiore di 15 secondi.To give Service Bus enough time to enqueue the message into a different fragment, the MessagingFactorySettings.OperationTimeout value specified by the client that sends the message must be greater than 15 seconds. È consigliabile impostare la proprietà OperationTimeout sul valore predefinito di 60 secondi.It is recommended that you set the OperationTimeout property to the default value of 60 seconds.

Tenere presente che una chiave di partizione "aggiunge" un messaggio a un frammento specifico.Note that a partition key "pins" a message to a specific fragment. Se l'archivio di messaggistica contenente questo frammento non è disponibile, il bus di servizio restituisce un errore.If the messaging store that holds this fragment is unavailable, Service Bus returns an error. In assenza di una chiave di partizione, il bus di servizio può scegliere un frammento diverso e l'operazione verrà completata correttamente.In the absence of a partition key, Service Bus can choose a different fragment and the operation succeeds. È quindi consigliabile non specificare una chiave di partizione, a meno che non sia necessario.Therefore, it is recommended that you do not supply a partition key unless it is required.

Argomenti avanzati: usare le transazioni con entità partizionateAdvanced topics: use transactions with partitioned entities

I messaggi inviati come parte di una transazione devono specificare una chiave di partizione.Messages that are sent as part of a transaction must specify a partition key. Tale chiave può essere una delle proprietà seguenti: BrokeredMessage.SessionId, BrokeredMessage.PartitionKey o BrokeredMessage.MessageId.This can be one of the following properties: BrokeredMessage.SessionId, BrokeredMessage.PartitionKey, or BrokeredMessage.MessageId. Tutti i messaggi che vengono inviati come parte della stessa transazione devono specificare la stessa chiave di partizione.All messages that are sent as part of the same transaction must specify the same partition key. Se si prova a inviare un messaggio senza una chiave di partizione in una transazione, il bus di servizio restituisce un'eccezione di operazione non valida.If you attempt to send a message without a partition key within a transaction, Service Bus returns an invalid operation exception. Se si prova a inviare più messaggi con chiavi di partizione diverse nella stessa transazione, il bus di servizio restituisce un'eccezione di operazione non valida.If you attempt to send multiple messages within the same transaction that have different partition keys, Service Bus returns an invalid operation exception. Ad esempio:For example:

CommittableTransaction committableTransaction = new CommittableTransaction();
using (TransactionScope ts = new TransactionScope(committableTransaction))
{
    BrokeredMessage msg = new BrokeredMessage("This is a message");
    msg.PartitionKey = "myPartitionKey";
    messageSender.Send(msg); 
    ts.Complete();
}
committableTransaction.Commit();

Se le proprietà che fungono da chiave di partizione sono impostate, il bus di servizio aggiunge il messaggio a un frammento specifico.If any of the properties that serve as a partition key are set, Service Bus pins the message to a specific fragment. Questo comportamento si verifica indipendentemente dall'uso di una transazione.This behavior occurs whether or not a transaction is used. È consigliabile non specificare una chiave di partizione, a meno che non sia necessario.It is recommended that you do not specify a partition key if it is not necessary.

Uso delle sessioni con entità partizionateUsing sessions with partitioned entities

Per inviare un messaggio transazionale a un argomento o una coda in grado di riconoscere la sessione, per il messaggio la proprietà BrokeredMessage.SessionId deve essere impostata.To send a transactional message to a session-aware topic or queue, the message must have the BrokeredMessage.SessionId property set. Se è specificata anche la proprietà BrokeredMessage.PartitionKey, quest'ultima deve avere un valore identico a quello della proprietà SessionId.If the BrokeredMessage.PartitionKey property is specified as well, it must be identical to the SessionId property. In caso contrario, il bus di servizio restituisce un'eccezione di operazione non valida.If they differ, Service Bus returns an invalid operation exception.

A differenza delle code o degli argomenti normali (non partizionati), non è possibile usare una singola transazione per inviare più messaggi a sessioni diverse.Unlike regular (non-partitioned) queues or topics, it is not possible to use a single transaction to send multiple messages to different sessions. Se è stato effettuato un tentativo, il bus di servizio restituirà un'eccezione di operazione non valida,If attempted, Service Bus returns an invalid operation exception. ad esempio:For example:

CommittableTransaction committableTransaction = new CommittableTransaction();
using (TransactionScope ts = new TransactionScope(committableTransaction))
{
    BrokeredMessage msg = new BrokeredMessage("This is a message");
    msg.SessionId = "mySession";
    messageSender.Send(msg); 
    ts.Complete();
}
committableTransaction.Commit();

Inoltro automatico dei messaggi con entità partizionateAutomatic message forwarding with partitioned entities

Il bus di servizio supporta l'inoltro automatico dei messaggi da, a o tra entità partizionate.Service Bus supports automatic message forwarding from, to, or between partitioned entities. Per abilitare l'inoltro automatico dei messaggi, impostare la proprietà QueueDescription.ForwardTo nella coda o nella sottoscrizione di origine.To enable automatic message forwarding, set the QueueDescription.ForwardTo property on the source queue or subscription. Se il messaggio specifica una chiave di partizione (SessionId, PartitionKey o MessageId), tale chiave viene usata per l'entità di destinazione.If the message specifies a partition key (SessionId, PartitionKey, or MessageId), that partition key is used for the destination entity.

Considerazioni e indicazioniConsiderations and guidelines

  • Funzionalità a coerenza elevata: se un'entità usa funzionalità come le sessioni, il rilevamento dei duplicati o il controllo esplicito della chiave di partizionamento, le operazioni di messaggistica vengono indirizzate sempre a frammenti specifici.High consistency features: If an entity uses features such as sessions, duplicate detection, or explicit control of partitioning key, then the messaging operations are always routed to specific fragments. In caso di traffico elevato in uno dei frammenti o di stato non integro dell'archivio sottostante, queste operazioni hanno esito negativo e la disponibilità viene ridotta.If any of the fragments experience high traffic or the underlying store is unhealthy, those operations fail and availability is reduced. La coerenza è complessivamente molto più elevata rispetto alle entità non partizionate. I problemi si verificano solo per un sottoinsieme del traffico, invece che per tutto il traffico.Overall, the consistency is still much higher than non-partitioned entities; only a subset of traffic is experiencing issues, as opposed to all the traffic. Per altre informazioni, vedere la discussione relativa a disponibilità e coerenza.For more information, see this discussion of availability and consistency.
  • Gestione: le operazioni di creazione, aggiornamento ed eliminazione devono essere eseguite su tutti i frammenti dell'entità.Management: Operations such as Create, Update and Delete must be performed on all the fragments of the entity. Se un frammento non è integro, potrebbero verificarsi errori per queste operazioni.If any fragment is unhealthy, it could result in failures for these operations. Per l'operazione Get è necessario aggregare da tutti i frammenti le informazioni quali il numero di messaggi.For the Get operation, information such as message counts must be aggregated from all fragments. Se un frammento non è integro, lo stato di disponibilità dell'entità risulta limitato.If any fragment is unhealthy, the entity availability status is reported as limited.
  • Scenari con volumi ridotti di messaggi: per questi scenari, in particolare se si usa il protocollo HTTP, potrebbe essere necessario eseguire più operazioni di ricezione per ottenere tutti i messaggi.Low volume message scenarios: For such scenarios, especially when using the HTTP protocol, you may have to perform multiple receive operations in order to obtain all the messages. Per le richieste di ricezione, il front-end esegue una ricezione su tutti i frammenti e memorizza nella cache tutte le risposte ricevute.For receive requests, the front end performs a receive on all the fragments and caches all the responses received. Una richiesta di ricezione successiva sulla stessa connessione sarebbe avvantaggiata dalla memorizzazione nella cache e le latenze di ricezione saranno minori.A subsequent receive request on the same connection would benefit from this caching and receive latencies will be lower. Se tuttavia sono presenti più connessioni o si usa HTTP, ciò crea una nuova connessione per ogni richiesta.However, if you have multiple connections or use HTTP, that establishes a new connection for each request. Non è quindi possibile assicurare che la richiesta venga ricevuta sullo stesso nodo.As such, there is no guarantee that it would land on the same node. Se tutti i messaggi esistenti sono bloccati e memorizzati nella cache in un altro front-end, l'operazione di ricezione restituisce null.If all existing messages are locked and cached in another front end, the receive operation returns null. I messaggi raggiungeranno infine la scadenza e verranno ricevuti di nuovo.Messages eventually expire and you can receive them again. È consigliabile usare la connessione keep-alive HTTP.HTTP keep-alive is recommended.
  • Esaminare/Visualizzare l'anteprima dei messaggi: PeekBatch non restituisce sempre il numero di messaggi specificati nella proprietà MessageCountBrowse/Peek messages: PeekBatch does not always return the number of messages specified in the MessageCount property. a causa di due motivi comuni.There are two common reasons for this. Il primo motivo consiste nel fatto che le dimensioni aggregate della raccolta di messaggi superano le dimensioni massime pari a 256 kB.One reason is that the aggregated size of the collection of messages exceeds the maximum size of 256 KB. L'altro motivo dipende dal fatto che, se la proprietà EnablePartitioning della coda o dell'argomento è impostata su true, è possibile che una partizione non includa una quantità di messaggi sufficiente per completare il numero di messaggi richiesto.Another reason is that if the queue or topic has the EnablePartitioning property set to true, a partition may not have enough messages to complete the requested number of messages. In genere, se un'applicazione vuole ricevere un numero specifico di messaggi, deve chiamare ripetutamente PeekBatch fino a ottenere tale numero di messaggi o fino a quando non siano più presenti messaggi di cui visualizzare l'anteprima.In general, if an application wants to receive a specific number of messages, it should call PeekBatch repeatedly until it gets that number of messages, or there are no more messages to peek. Per altre informazioni, inclusi esempi di codice, vedere la documentazione relativa all'API QueueClient.PeekBatch o SubscriptionClient.PeekBatch.For more information, including code samples, see the QueueClient.PeekBatch or SubscriptionClient.PeekBatch API documentation.

Funzionalità aggiunte di recenteLatest added features

Limiti delle entità partizionatePartitioned entities limitations

Attualmente il bus di servizio impone alle code o agli argomenti partizionati i limiti seguenti:Currently Service Bus imposes the following limitations on partitioned queues and topics:

  • Le code e gli argomenti partizionati non supportano l'invio di messaggi che appartengono a sessioni diverse in una singola transazione.Partitioned queues and topics do not support sending messages that belong to different sessions in a single transaction.
  • Il bus di servizio attualmente consente fino a 100 code o argomenti partizionati per spazio dei nomi.Service Bus currently allows up to 100 partitioned queues or topics per namespace. Ogni coda o argomento partizionato viene conteggiato ai fini della quota di 10.000 entità per spazio dei nomi (non si applica al livello Premium).Each partitioned queue or topic counts towards the quota of 10,000 entities per namespace (does not apply to Premium tier).

Passaggi successiviNext steps

Per altre informazioni sui concetti di base relativi alle specifiche di messaggistica di AMQP 1.0 consultare la guida al protocollo AMQP 1.0.Read about the core concepts of the AMQP 1.0 messaging specification in the AMQP 1.0 protocol guide.