nats中的通知顺序

1、一个客户端,中间消息未回复

publish [stream_sequence] subject-data
[1] test.001 - version1.0
[2] test.002 - version1.0
[3] test.003 - version1.0

consumer中1、3回复,2不回复:

 [stream_sequence consumer_sequence] subject-data
[1 1] test.001 - version1.0     ack ok
[2 2] test.002 - version1.0     don't ack
[3 3] test.003 - version1.0     ack ok
custom.NextMsg error:  context deadline exceeded
custom.NextMsg error:  context deadline exceeded
[2 4] test.002  version1.0     ack ok

另外,看接口应该可以通过增加consumer的option中MaxWaiting或者MaxAckPending为1实现严格顺序保证。但设置后只能一个数据一个数据的顺序处理会影响效率。

如果不设置,客户端接收到的顺序是不能按照steam_seq保证的。

2、多个客户端,负载分担

负载分担情况下,如果其中一个客户端有数据没有回复挂掉了,后面需要再派发给其他客户端,是没法保证顺序的。如果一个一个顺序处理就失去了负载分担的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值