我问了一个问题: Microservice Architecture dependency使用集群式微服务架构时使用的模式。
我收到了答案,点到点应该有效,但在阅读时: https://nats.io/documentation/concepts/nats-req-rep/ 感觉就像所有订阅者都收到了事件(因为它处理它),但只有一个订阅者会响应。当放置一个订单事件时,这将无法触发库存微服务订阅的更新库存事件(如链接中的示例),即由于库存而无法在集群环境中工作,因此更新的次数与微服务实例的数量。
如何使用Nats解决此问题?
提前致谢!
答案 0 :(得分:4)
NATS.io使用队列组支持此功能:
具有相同队列名称的所有订阅将形成队列组。 每条消息将被传送到每个队列组只有一个订阅者, 使用排队语义。您可以拥有任意数量的队列组。 普通用户将继续按预期工作。
使用队列组连接您的服务(示例是node.js):
https://github.com/nats-io/node-nats#queue-groups
nats.subscribe('foo', {'queue':'job.workers'}, function() {
received += 1;
});
然后客户端将使用库提供的请求方法:
https://github.com/nats-io/node-nats#basic-usage
// Request for single response with timeout.
nats.requestOne('help', null, {}, 1000, function(response) {
// `NATS` is the library.
if(response.code && response.code === NATS.REQ_TIMEOUT) {
console.log('Request for help timed out.');
return;
}
console.log('Got a response for help: ' + response);
});