无法打开绑定到应用程序 header x-match 表达式的接收器
can't open a receiver bound to application header x-match expression
我正在使用 rhea (https://github.com/amqp/rhea),一个 node.js 库来开发 AMQP 1.0 客户端。
我正在尝试使用 x-match 表达式而不是 JMS 表达式来调整 https://github.com/amqp/rhea/tree/master/examples/selector 示例。
目的是实现基于 AMQP 1.0 兼容代理(ActiveMQ、Qpid、...)的 header 路由 机制。
我在 recv.js:
的适当部分试过这段代码
connection.open_receiver({
source: {
address: 'amq.match',
filter: {
'x-match': 'all',
value: {
'nat': 'it',
'prod': 'a22'
}
}
}
})
收到来自 Qpid Java 代理(版本 7.1.0)的连接错误 "Expected value type is 'Filter' but got 'String' amqp:decode-error"。
根据在 rhea github repo 上收到的回答:
https://github.com/amqp/rhea/issues/200#issuecomment-469220880
The filter needs to be a described value. Try something like this:
connection.open_receiver({
source: {
address: 'amq.match',
filter: {
'foo': amqp_types.wrap_described({
'nat': 'it',
'prod': 'a22',
'x-match': 'all'
}, 0x468C00000002)
}
}
});
其中:
var amqp_types = require('rhea').types;
这仅适用于 Qpid cpp,不适用于 ActiveMQ 和 Qpid java。
我正在使用 rhea (https://github.com/amqp/rhea),一个 node.js 库来开发 AMQP 1.0 客户端。
我正在尝试使用 x-match 表达式而不是 JMS 表达式来调整 https://github.com/amqp/rhea/tree/master/examples/selector 示例。
目的是实现基于 AMQP 1.0 兼容代理(ActiveMQ、Qpid、...)的 header 路由 机制。
我在 recv.js:
的适当部分试过这段代码connection.open_receiver({
source: {
address: 'amq.match',
filter: {
'x-match': 'all',
value: {
'nat': 'it',
'prod': 'a22'
}
}
}
})
收到来自 Qpid Java 代理(版本 7.1.0)的连接错误 "Expected value type is 'Filter' but got 'String' amqp:decode-error"。
根据在 rhea github repo 上收到的回答:
https://github.com/amqp/rhea/issues/200#issuecomment-469220880
The filter needs to be a described value. Try something like this:
connection.open_receiver({
source: {
address: 'amq.match',
filter: {
'foo': amqp_types.wrap_described({
'nat': 'it',
'prod': 'a22',
'x-match': 'all'
}, 0x468C00000002)
}
}
});
其中:
var amqp_types = require('rhea').types;
这仅适用于 Qpid cpp,不适用于 ActiveMQ 和 Qpid java。