2017-05-21 2 views
0

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.

+1

Der Filterwert muss eine Zeichenfolge sein. Es könnte ein Problem mit dem Proton :: Binärwert geben, den du eingibst. –

+0

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. –

+0

@GregClinton Sie könnten den korrigierten Code auch bearbeiten und schreiben. Wenn Sie die Binärdatei entfernt haben, wie haben Sie die Bedingung bestanden? –

Antwort

Verwandte Themen