RabbitMQ AMQP.BasicProperties.Builder-Werte
In der RabbitMQ/AMQP-Java-client, erstellen Sie eine AMQP.BasicProperties.Builder
und es verwenden, um build()
eine Instanz von AMQP.BasicProperties
. Diese integrierten Eigenschaften-Instanz kann dann verwendet werden, um alle Arten wichtiger Dinge. Es gibt viele "builder"-Stil Methoden zur Verfügung, die auf diese builder-Klasse:
BasicProperties.Builder propsBuilder = new BasicProperties.Builder();
propsBuilder
.appId(???)
.clusterId(???)
.contentEncoding(???)
.contentType(???)
.correlationId(???)
.deliveryMode(2)
.expiration(???)
.headers(???)
.messageId(???)
.priority(???)
.replyTo(???)
.timestamp(???)
.type(???)
.userId(???);
Ich bin auf der Suche, für welche Felder diese builer Methoden helfen "build-up", und vor allem, was gültige Werte existieren für jedes Feld. Zum Beispiel, was ist ein clusterId
und was sind die gültigen Werte? Was ist type
und was sind die gültigen Werte? Etc.
Habe ich verbrachte den ganzen morgen scheuern:
- Der Java-client-Dokumentation; und
- Die Javadocs; und
- Der RabbitMQ vollständige Referenz-Handbuch; und
- Der AMQP-Spezifikation
In all diesen docs, ich kann nicht finden, klare Definitionen (neben einigen vage Erklärung, was priority
contentEncoding
und deliveryMode
sind), was diese Felder sind und was Ihre Werte sind gültig. Hat jemand das wissen? Noch wichtiger ist, weiß jemand, wo diese sind auch dokumentiert? Vielen Dank im Voraus!
InformationsquelleAutor der Frage | 2013-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise verwende ich eine sehr einfache Methode etwas auswendig zu lernen. Ich werde alle details unter, aber hier ist ein einfaches Bild, BasicProperties Feld und Werte. Ich habe auch versucht, richtig zu markieren, queue/server-und Anwendungs-Kontext.
Wenn Sie mich wollen, Sie zu verbessern ein bisschen - werfen Sie einfach einen kleinen Kommentar. Was ich wirklich will, ist einigen visual key und vereinfacht das Verständnis.
High-level-Beschreibung (Quelle 1Quelle 2):
Bitte beachten Sie Clust-ID ist veraltet, also werde ich es ausschließen.
BTW, ich habe es endlich geschafft, ein review neueste Server-code (rabbitmq-server-3.1.5), es gibt ein Beispiel in rabbit_stomp_test_util.erl:
Gut zu wissen, jemand will alle details wissen. Da ist es viel besser, die die bekannten message-Attribute wenn möglich, statt Informationen im Textkörper der Nachricht. BTW, basic-message-Eigenschaften sind bei weitem nicht klar und nützlich. Ich würde sagen, es ist besser, verwenden Sie eine benutzerdefinierte.
Gutes Beispiel (Quelle)
Update - Ablauf Feld
Wichtiger Hinweis: Ablauf gehört zu Warteschlange Kontext. So Nachricht kann gelöscht werden vom Server.
README sagt Folgendes:
Quellen:
InformationsquelleAutor der Antwort
Zum Zeitpunkt des Schreibens:
In dieser Antwort:
contentType
undcontentEncoding
- das ist sicher, denn diese sind standard-Felder, die mit guten Beschreibungen im AMQP 1.0.Den folgenden text paraphrasiert aus diesen Quellen, die mich zu ein wenig mehr präzise oder klar.
auch wenn es ein schwerwiegender Netzwerkfehler, server-crash, überlauf etc.
Wie Sie oben sehen können, die überwiegende Mehrheit der diese Eigenschaften nicht aufgelistet habe /eingeschränkt /empfohlenen Werte, weil Sie "Anwendung" und nicht von RabbitMQ. So haben Sie einen einfachen job. Du bist frei zu schreiben/Lesen, Werte, die nützlich für Ihre Anwendung - so lange, wie Sie passen, Datentyp und kompilieren :).
ContentType
undcontentEncoding
sind, wie pro standard-HTTP verwenden.DeliveryMode
undpriority
gezwungen sind, zahlen.Hinweis: Nützlich, aber einfache Konstanten für AMQP.BasicProperties sind in der Klasse MessageProperties.
Prost 🙂
UPDATE ZU POSTEN:
Vielen Dank an Renat (siehe Kommentare), habe mir bei erlang-server-code in rabbit_amqqueue_process.erl und-Dokumentation RabbitMQ TTL-Erweiterungen AMQP. Message-Ablauf ("time-to-live) festgelegt werden kann
pro Warteschlange über:
oder per Nachricht über:
Hier die Gültigkeitsdauer/Ablaufdatum ist in millisecs, also 60 Sek. in jedem Fall.
Aktualisiert haben oben erwähnte definition von Ablauf, um dies zu reflektieren.
InformationsquelleAutor der Antwort Glen Best
Den
AMQP
Spezifikation definiert ein generisches, erweiterbares Modell für Eigenschaften.AMQP-Eigenschaften sind sehr ähnlich im Konzept, um HTTP-Header, in das Sie repräsentieren Metadaten über die Nachrichten in Frage. Nur, wie in HTTP, Sie sind umrahmt separat auf die message-payload. Aber im Grunde sind Sie ein Schlüssel/Wert-Karte.
Einige Broker wie RabbitMQ interpretiert werden bestimmte Eigenschaften Nachricht wie
expiration
um zusätzliche Hersteller-spezifischen Wert (in diesem Fall die Durchsetzung eines TTL).Aber am Ende, AMQP-Eigenschaften sind nur ein großer Haufen von Schlüssel/Wert-Paare, die sich sicher geschickt, zusammen mit jeder Nachricht, die Sie wählen sollten, zu tun. Ihre AMQP broker-Dokumentation wird Ihnen sagen, welche diejenigen, die Sie interpretieren, und speziell, wie Sie zum senden Ihrer eigenen.
Alle, die being said, wenn Sie Fragen, diese Frage in den ersten Platz, dann haben Sie wahrscheinlich nicht brauchen, um über Sie überhaupt. Werden Sie erfolgreich in der Lage, Nachrichten zu senden, ohne sich sorgen über irgendwelche message-Eigenschaften an alle.
InformationsquelleAutor der Antwort Brian Kelly