如何使用qpid质子对天蓝色事件中心应用过滤器

时间:2017-05-21 14:44:22

标签: amqp azure-eventhub qpid

我正在尝试将qpid-proton-0.17.0的过滤器应用于azure eventhubs。这是我的过滤器代码:

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中使用类似的javascript代码。任何有关如何使我的qpid代码工作的帮助将不胜感激。

新说明:根据陈鑫的回复,我更换了上面的一行

    << proton::binary("amqp.annotation.x-opt-offset > '100'")

    << "amqp.annotation.x-opt-offset > 100"

这似乎有效。

1 个答案:

答案 0 :(得分:1)

Azure事件中心使用描述的字符串作为过滤器来指定起始位置。描述符是一个符号&#34; apache.org:selector-filter:string&#34;而值是一个字符串。更多详细信息可在此页面中找到:https://github.com/Azure/amqpnetlite/blob/master/docs/articles/azure_eventhubs.md