2017-05-21 15 views
0

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'") 

위의 라인을 교체 그리고이 작동하는 것 같다.

+1

필터 값은 문자열이어야합니다. 당신이 넣은 양성자 : 이진 값에 문제가있을 수 있습니다. –

+0

예, 작동했습니다, @Xin. 고맙습니다. 위의 코드에서 proton :: binary를 제거하면 문제가 해결됩니다. 어쩌면 답으로 게시 할 수 있습니다. 나는 qpid의 selected_recv.cpp 예제 코드를 사용했다. 바이너리를 사용했지만 분명히 푸른 하늘 이벤트 허브였다. –

+0

@GregClinton 수정 된 코드를 편집하고 쓸 수도 있습니다. 바이너리를 제거했다면 어떻게 그 조건을 통과 했습니까? –

답변