azure eventhubs에 대해 qpid-proton-0.17.0 필터를 적용하려고합니다. 여기 내 필터 코드 :azure 이벤트 허브에 대해 qpid 양성자 필터를 적용하는 방법
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));
나는 다시 결국이 오류 어떤 메시지를 얻을 :
com.microsoft:timeout: The operation did not complete within the allocated time
00:01:00 for object attach.
내가 어떤 필터를 적용하지 않으면, 내가 필터링되지 않은 메시지 스트림이 표시 얻는다. noodlefrenzy의 amqp10 라이브러리를 사용하여 nodejs에서 유사한 자바 스크립트 코드로 작업 할 수있는 필터를 얻을 수있었습니다. 내 qpid 코드를 작동시키는 방법에 대한 도움을 주시면 감사하겠습니다.
새로운 참고 : 신화 첸의 응답에 따라, 나는
<< "amqp.annotation.x-opt-offset > 100"
와
<< proton::binary("amqp.annotation.x-opt-offset > '100'")
위의 라인을 교체 그리고이 작동하는 것 같다.
필터 값은 문자열이어야합니다. 당신이 넣은 양성자 : 이진 값에 문제가있을 수 있습니다. –
예, 작동했습니다, @Xin. 고맙습니다. 위의 코드에서 proton :: binary를 제거하면 문제가 해결됩니다. 어쩌면 답으로 게시 할 수 있습니다. 나는 qpid의 selected_recv.cpp 예제 코드를 사용했다. 바이너리를 사용했지만 분명히 푸른 하늘 이벤트 허브였다. –
@GregClinton 수정 된 코드를 편집하고 쓸 수도 있습니다. 바이너리를 제거했다면 어떻게 그 조건을 통과 했습니까? –