Scenari ed esempi per limitare il numero di trasferimenti di file ai singoli server di file

Come funziona l'agent bridge di protocollo revisionato con gli attributi maxActiveDestinationTransfers e failTransferWhenCapacityReached , insieme ad alcuni esempi.

Scenari che mostrano il funzionamento dell'agente bridge di protocollo basato sul valore maxActiveDestinationTransfers

Scenario 1

Il file ProtocolBridgeProperties.xml per un agent bridge di protocollo contiene due definizioni di file server:
  • Non è stato impostato l'attributo maxActiveDestinationTransfers globale.
  • Non è stato impostato l'attributo maxActiveDestinationTransfers su fileServerA e FileServerB.
  • È stato impostato l'attributo maxDestinationTransfers dell'agent bridge di protocollo sul valore predefinito.
Se l'attributo maxDestinationTransfers dell'agent bridge di protocollo è stato impostato sul valore predefinito di 25,:
  • L'agent di destinazione avvia l'elaborazione di due trasferimenti gestiti in fileServerA.
  • Entrambi i trasferimenti sono stati completati.
    A questo punto, il client si rende conto che fileServerA non è riuscito e imposta i seguenti valori per fileServerA nel file ProtocolBridgeProperties.xml :
    • maxActiveDestinationTransfers = 0
    • failTransferWhenCapacityReached = vero
  • Un altro trasferimento arriva per fileServerA e alcuni per fileServerB:

    In base alla proprietà impostata nel passo precedente, il trasferimento gestito a fileServerA viene rifiutato e contrassegnato come non riuscito, mentre i trasferimenti per fileServerB sono gestiti nel flusso esistente standard.

  • Dopo qualche tempo, il client scopre che fileServerA è di nuovo in esecuzione, quindi il client rimuove o commenta il valore aggiunto precedentemente in ProtocolBridgeProperties.xml. Arriva un nuovo trasferimento gestito per fileServerA e viene gestito nel flusso esistente standard.

Scenario 2

  • È stato impostato l'attributo maxActiveDestinationTransfers per un server di file e non l'attributo failTransferWhenCapacityReached .
  • L'agent bridge di protocollo agisce come agent di destinazione per questo numero di trasferimenti gestiti al file server.
  • Il valore dell'attributo maxActiveDestinationTransfers è ridotto di 1.
L'agent bridge di protocollo aggiorna dinamicamente la relativa configurazione e imposta maxActiveDestinationTransfers sul nuovo valore mentre è ancora attivo. I trasferimenti gestiti in corso non sono interessati da questo aggiornamento e possono essere completati.

Scenario 3

Il file ProtocolBridgeProperties.xml di un agente di protocol bridge contiene due definizioni di file server:
  • Non è stato impostato l'attributo maxActiveDestinationTransfers globale.
  • L'attributo failTransferWhenCapacityReached non è stato impostato.
  • maxActiveDestinationTransfers è stato impostato su 1 su fileServerA.
  • L'attributo maxActiveDestinationTransfers non è stato impostato su fileServerB.
Se l'agent bridge di protocollo ha l'attributo maxDestinationTransfers impostato su 5:
  • Il numero massimo di trasferimenti di destinazione attivi dall'agent bridge di protocollo a fileServerA è 1 (sebbene l'agent di destinazione abbia 5 slot di trasferimento di destinazione, solo 1 può essere utilizzato per i trasferimenti gestiti a fileServerA).

    Ciò è utile quando fileServerA non riesce. Una volta che fileServerA è nuovamente in esecuzione, il valore di maxActiveDestinationTransfers può essere aumentato a 5 per consentire la piena capacità dei trasferimenti di destinazione consentiti.

  • Il numero massimo di trasferimenti di destinazione attivi dall'agent bridge di protocollo a fileServerB è 5.

    Poiché maxActiveDestinationTransfers non è impostato per questo server di file, l'agent bridge di protocollo può utilizzare tutti i 5 slot di trasferimento di destinazione per i trasferimenti gestiti.

Scenario 4

Nel seguente diagramma:
  • È stato impostato l'attributo maxDestinationTransfers su 2 nel file agent.properties .
  • maxActiveDestinationTransfers è stato impostato su 2 su fileServerA.
  • L'attributo maxActiveDestinationTransfers è stato impostato su 2 su fileServerB.
  • L'attributo maxActiveDestinationTransfers non è stato impostato su fileServerC.
Il diagramma mostra che maxActiveDestinationTransfers e maxDestinationTransfers sono indipendenti l'uno dall'altro.

Come mostra il diagramma, gli attributi maxActiveDestinationTransfers e maxDestinationTransfers sono indipendenti l'uno dall'altro.

I valori per maxActiveDestinationTransfers per ciascuno dei server vengono controllati. In base a questo valore, ai trasferimenti è consentito continuare o passare allo stato WaitingForDestinationFileServerCapacity .

I trasferimenti consentiti passano quindi attraverso il flusso standard esistente di verifica rispetto al maxDestinationTransfers.

Scenario 5

Attenzione: è necessario prestare attenzione quando si impostano i valori degli attributi maxActiveDestinationTransfers poiché è necessario tenere presente il valore dell'attributo maxDestinationTransfers .
Se non si esegue questa operazione, può verificarsi una situazione come descritto nel testo seguente:
  • Non è stato impostato un valore per l'attributo maxActiveDestinationTransfers globale.
  • È stato impostato il valore maxDestinationTransfers= 2 nel file agent.properties .
  • È stato impostato il valore maxActiveDestinationTransfers= 2 su fileServerA.
  • Non è stato impostato un valore per maxActiveDestinationTransfers su fileServerB.
Si supponga che si verifichi la seguente sequenza di eventi:
  • L'agent bridge di protocollo riceve una richiesta di trasferimento di un file a fileServerA. L'agent bridge di protocollo non sta attualmente eseguendo alcuna operazione, quindi accetta questa richiesta di trasferimento gestito.
    Gli slot di trasferimento ora hanno il seguente aspetto:
    • Trasferimenti di destinazione: 1
    • Trasferimenti di destinazione per fileServerA: 1
    • Trasferimenti di destinazione per fileServerB: 0
  • A questo punto, l'agent bridge di protocollo riceve un'ulteriore richiesta di agire come agent di destinazione per un trasferimento gestito che coinvolge fileServerA. Ancora una volta, accetta questa richiesta e quindi gli slot di trasferimento si assomigliano a questo:
    • Trasferimenti destinazione: 2
    • Trasferimenti di destinazione per fileServerA: 2
    • Trasferimenti di destinazione per fileServerB: 0
I due slot Destination Transfer nell'agent sono ora occupati e quindi l'agent non può partecipare a ulteriori trasferimenti gestiti fino a quando uno dei trasferimenti a fileServerA non è terminato.
  • Un breve periodo di tempo dopo, fileServerA non riesce, causando il ripristino dei due trasferimenti gestiti. Gli slot Destination transfer che questi trasferimenti gestiti utilizzano restano in uso durante questo periodo di tempo.
  • Successivamente, l'agente bridge di protocollo riceve una richiesta di trasferimento di un file a fileServerB. C'è uno spazio per questo trasferimento negli slot Destination Transfers for fileServerB , tuttavia, vengono utilizzati tutti gli slot Destination Transfer per l'agent e quindi il trasferimento viene inserito nel backlog in modo che possa essere ritentato in un secondo momento.

Di conseguenza, il trasferimento a fileServerB viene bloccato fino a che almeno uno dei trasferimenti a fileServerA non ha completato e rilasciato il suo slot Destination Transfer .

Per evitare che questa situazione si verifichi:
  • Impostare il valore di maxActiveDestinationTransfers sui server di file in modo che sia inferiore al valore maxDestinationTransfers , in modo che rimangano gli slot liberi.
  • Oppure distribuire in modo uniforme il valore dell'attributo maxActiveDestinationTransfers tra tutti i server endpoint.

Funzionamento dell'agent bridge di protocollo basato sui valori dell'attributo maxActiveDestinationTransfers

Nota: in tutti i casi di errore elencati nella seguente tabella, se l'attributo maxActiveDestinationTransfers è impostato su un valore non valido, l'agent bridge di protocollo presuppone che questo attributo non sia impostato.
maxActiveDestinationTransfers Valore di esempio Descrizione
Non specificato Non specificato I trasferimenti vanno come al solito. Non esiste alcun limite al numero di trasferimenti per l'endpoint * ftp *.
Specificata 0 Nessun trasferimento consentito a questo endpoint * ftp * specifico.
Valore negativo -1 Errore registrato in output0.log Value -1 non è valido per un numero intero non negativo.

L'agent bridge di protocollo presuppone che l'attributo non sia impostato.

Valore non intero abc Errore registrato in output0.log Valore abc non valido per un valore intero.

L'agent bridge di protocollo presuppone che l'attributo non sia impostato.

Vuoto "" Il valore '' dell'attributo maxActiveDestinationTransfers non è valido per un numero intero non negativo.
Specificata 5 Consente di eseguire solo cinque trasferimenti attivi in qualsiasi momento per questo endpoint * ftp *.

I trasferimenti eccessivi vengono ritentati o rifiutati, in base al valore dell'attributo failTransferWhenCapacityReached.

Funzionamento dell'agent bridge di protocollo per la combinazione di attributi maxActiveDestinationTransfers e failTransferWhenCapacityReached

valore failTransferWhenCapacityReached valore maxActiveDestinationTransfers Risultato
No 3 Sono consentiti tre trasferimenti attivi a questo server endpoint. Qualsiasi altro trasferimento viene ritentato.
Vero 3 Sono consentiti tre trasferimenti attivi a questo server endpoint. Eventuali altri trasferimenti vengono rifiutati e contrassegnati come non riusciti.
Non specificato 3 Il valore predefinito false per failTransferWhenCapacityReached è considerato.

Il risultato è che tre trasferimenti attivi sono consentiti a questo server endpoint. Qualsiasi altro trasferimento viene ritentato.

Valori diversi dal valore booleano Specificata Errore registrato in output.log.

Il valore specificato per failTransferWhenCapacityReached non è un valore booleano.

Viene considerato il valore predefinito per failTransferWhenCapacityReached.

Funzionamento dell'agent bridge di protocollo per la combinazione di attributi maxDestinationTransfers e failTransferWhenCapacityReached

valore failTransferWhenCapacityReached valore maxDestinationTransfers Risultato
Vero 10 Quando il numero di trasferimenti attivi simultanei raggiunge 10, l'11esimo trasferimento gestito non riesce dall'agent bridge di protocollo.
No 10 Comportamento esistente.

Quando il numero di trasferimenti attivi simultanei raggiunge 10, l'11esimo trasferimento gestito viene accodato in attesa che venga liberato uno slot.

Non specificato 10 Comportamento esistente

Messaggi di errore

Messaggio esistente:
BFGS0082I
Viene registrato nel file output0.log dell'agent di origine quando l'agent bridge di protocollo rifiuta il trasferimento, quando l'agent bridge di protocollo sta già eseguendo il numero massimo di trasferimenti definiti nell'attributo maxDestinationTransfers .
Nuovi messaggi:
BFGSS0085I
Viene registrato nel file output0.log dell'agent di origine quando l'agent bridge di protocollo rifiuta e ritenta un trasferimento gestito,
BFGSS0086I
Viene registrato nel file output0.log dell'agent di origine quando l'agent bridge di protocollo rifiuta e ritenta un trasferimento gestito e l'item di destinazione non include il nome del server di file
BFGSS0084E
Viene registrato nel file Explorer e audit.xml quando l'agent bridge di protocollo rifiuta, per il superamento del numero massimo di trasferimenti simultanei specificato nell'attributo maxActiveDestinationTransfers e contrassegna un trasferimento gestito come non riuscito.
BFGSS0087E
Viene registrato nel file Explorer e audit.xml quando l'agent bridge di protocollo rifiuta, per aver superato il numero massimo di trasferimenti di destinazione specificati nell'attributo maxActiveDestinationTransfers e contrassegna un trasferimento gestito come non riuscito.
BFGSS0088W
Viene registrato in output0.log, quando il valore dell'attributo maxActiveDestinationTransfers supera il valore dell'attributo maxDestinationTransfers .
BFGSS0089I
viene registrato nel file output0.log dell'agent bridge del protocollo di destinazione, quando sta utilizzando un agent di origine che non si trova in IBM® MQ 9.3.0o in una versione successiva.