
Durch Blacklisting kann verhindert werden, dass es wegen einzelner Messages zu Server-Überlastungen oder Server-Ausfällen kommt. Beispielsweise kann eine Message mit großer Payload zu einem Server-Ausfall führen. Beim Blacklisting werden Messages identifiziert und isoliert, die wahrscheinlich zu Problemen führen oder während eines Server-Ausfalls verarbeitet wurden.
Message-Failover
In einer Cluster-Umgebung werden bei einem Serverknoten-Ausfall die betroffenen Messages, die von diesem Knoten verabeitet werden sollten, zu anderen aktiven Knoten im Cluster zugewiesen (dieses Verfahren wird als Failover bezeichnet, d.h. den ungeplanten Wechsel vom Primärknoten auf einen Ausweichknoten). Wenn nur ein Cluster-Knoten vorhanden ist, wird eine fehlerhafte Message beim Neustart des Knotens nochmals von diesem Knoten verarbeitet.
Wird eine fehlerhafte Message einem anderen Knoten zugeordnet, so kann es auch bei diesem Knoten zu einem Ausfall kommen. Wenn die Message dann durch Failover an einen neuen aktiven Knoten übergeben wird, so kann auch dieser Knoten ausfallen. Ebenso können alle weiteren Knoten nacheinander ausfallen. Auf diesem Weg kann ein gesamtes Cluster aufgrund einer einzigen fehlerhaften Message ausfallen. Das Cluster würde in einem solchen Fall neu gestartet und es käme zu einem erneuten wiederholten Ausfall. Im schlimmsten Fall würde das gesamte Cluster in einer Endlosschleife aus Neustarts gefangen.
Durch Blacklisting werden solche endlosen Cluster-Neustarts vermieden. Wenn ein Knoten ausfällt und eine fehlerhafte Message nach zwei Versuchen nicht erfolgreich verarbeitet werden kann, erhält die Message den Status Nicht zugestellt (NDLV für Non Delivered).
Es kann einige Zeit dauern, bevor der Knoten ein zweites Mal ausfällt. Daher kann es sein, dass die Message den Status Nicht zugestellt erst nach einer gewissen Zeit erhält.
Message-Status
Die folgende Grafik bietet eine Übersicht über die verschiedenen Verarbeitungszustände von Messages.

Zu Beginn hat eine Message in der Queue den Status TBDL (To Be Delivered, Zuzustellen). Während die Zustellung läuft, wechselt der Status auf DLNG (Delivering, Zustellung läuft). Nach der erfolgreichen Zustellung erhält die Message den Status DLVD (Delivered, Zugestellt).
Wenn ein Server ausfällt und neu gestartet wird, erhalten Messages, die noch den Status DLNG haben, den Ausgangsstatus TBDL und werden erneut in die Queue gestellt.
Messages, deren Zustellung zum Zeitpunkt des Server-Ausfalls gerade läuft (Status DLNG), werden als Kandidaten für das Blacklisting gekennzeichnet. Wenn eine Message bereits früher als Blacklisting-Kandidat markiert wurde, erhält sie automatisch den Zustand NDLV. Dadurch wird eine Endlosserie von Ausfällen verhindert.
Wenn Messages auf der Blacklist den Status NDLV haben, muss ein Administrator entscheiden, ob die Messages verarbeitet werden dürfen oder ob ihr Status auf FAIL gesetzt werden soll.