我有一个实现NATS 队列
的小项目
这是代码:
import * as NATS from '../node_modules/nats' // for typescript
var nats = require('nats');
var config = require('./config');
var opt: NATS.ClientOpts = {'noRandomize': false, 'reconnect': true,
'maxReconnectAttempts': -1, 'servers':config.nat.servers, 'user':
config.nat.user , 'pass': config.nat.pass };
var nc: NATS.Client = nats.connect(opt);
nc.on('error', function(e) {
console.error('Error nats: ' + e);
});
nc.on('close', function() {
console.error('CLOSED nats');
});
nc.subscribe('serviceA', { 'queue': 'A' }, function (request, replyTo) {
console.debug('I exec serviceA via nats:');
j = JSON.parse(request);
console.debug(j);
let ok = {"res": "i am response for service A"}
nc.publish(replyTo, JSON.stringify(ok));
}
let cmd = '{"a": 5, "b": "i am sample"}';
nc.requestOne('serviceA', cmd, {}, 15000, function (response) {
if (response.code && response.code === nats.REQ_TIMEOUT) {
console.error('server timeout');
console.error(response.code);
} else {
console.log('A see this response: ' + response);
}
});
nc.subscribe('serviceB', { 'queue': 'B' }, function (request, replyTo) {
console.debug('I exec serviceB via nats:');
j = JSON.parse(request);
console.debug(j);
let ok = {"res": "i am response for service B"}
nc.publish(replyTo, JSON.stringify(ok));
}
let cmd = '{"c": 5, "d": "i am sample"}';
nc.requestOne('serviceB', cmd, {}, 15000, function (response) {
if (response.code && response.code === nats.REQ_TIMEOUT) {
console.error('server timeout');
console.error(response.code);
} else {
console.log('B see this response: ' + response);
}
});
如您所见,有 2 个服务 - serviceA
on queueA
和serviceB
on queueB
以及 2 个客户端:第一个调用服务 A,第二个调用服务 B
NATS 实现 Subject ('serviceA'
和'serviceB'
)
现在,我想尝试使用 ØMQ 转换示例 我发现使用 ZeroMQ 的类似示例
但我在主题上找不到任何样本。
或许ØMQROUTER
用来实现一个主题
您能帮我将主题实现到 ZeroMQ 示例中吗?