Ich versuche, einen Filter mit qpid-Proton-0.17.0 gegen azurblaue Eventhubs anzuwenden. Hier ist mein Filtercode ist:Wie man Filter mit qpid Proton gegen Azure Event Hubs anwendet
proton::value filter_value;
proton::codec::encoder enc(filter_value);
enc << proton::codec::start::described()
<< proton::symbol("apache.org:selector-filter:string")
<< proton::binary("amqp.annotation.x-opt-offset > '100'")
<< proton::codec::finish();
proton::source::filter_map map;
proton::symbol key("apache.org:selector-filter:string");
map.put(key, filter_value);
proton::receiver_options ro;
ro.source(source_options().filters(map));
Ich erhalte keine Nachrichten zurück und schließlich diesen Fehler:
com.microsoft:timeout: The operation did not complete within the allocated time
00:01:00 for object attach.
Wenn ich keinen Filter anwenden, ich tun die ungefilterten Nachrichtenstrom zu erscheinen. Ich bin in der Lage gewesen, den Filter zu erhalten, um mit ähnlichem Javascript-Code in nodejs zu arbeiten, das die amqp10 Bibliothek noodlefrenzy benutzt. Irgendeine Hilfe, wie man meinen qpid Code zum Funktionieren bringt, würde geschätzt werden.
Neue Notiz: pro Xin Chen Antwort, ersetzte ich die Zeile oben
<< proton::binary("amqp.annotation.x-opt-offset > '100'")
mit
<< "amqp.annotation.x-opt-offset > 100"
Und das scheint zu funktionieren.
Der Filterwert muss eine Zeichenfolge sein. Es könnte ein Problem mit dem Proton :: Binärwert geben, den du eingibst. –
Ja, das hat funktioniert, @Xin. Vielen Dank. Das Entfernen von proton :: binary aus dem obigen Code hat mein Problem behoben. Vielleicht kannst du als Antwort posten. Ich habe qpid's selected_recv.cpp-Beispiel-Code verwendet, wo sie binäre, aber anscheinend azurblauen Ereignis-Hub verwendet haben, tut es anders. –
@GregClinton Sie könnten den korrigierten Code auch bearbeiten und schreiben. Wenn Sie die Binärdatei entfernt haben, wie haben Sie die Bedingung bestanden? –