在配置文件中,如果我们使用特定的订阅,它将显示错误。但是如果我们使用通配符'>‘,那么它就没有问题地运行了.
配置文件,需要订阅用户vizzio和test:
authorization: {
users: [
{ user: aquila, password: $2a$12$9TasTI2C08RXkDs/EsZSIOaPDn.oKBcoNpsz71zY1bVXGSIhfjrQS, permissions: { publish: { deny: ">" },
subscribe: "nats.service.aquila.>", allow_responses: true}},
{ user: vizzio, password: $2a$12$2vFQ3Buqy8i4DNhRoTjJ7ui3njVwDPSnZK2Oi/zLfjMxibOQIuKcS, permissions: { publish: "nats.service.aquila.>",
subscribe: "nats.service.aquila.>"}},
{ user: test, password: $2a$12$tjLLKZgO9JR.tyk.BhperOt8F82xrDJ9fjcOnJEO/5QHXX7OlSz2e, permissions: { publish: "nats.service.aquila.vehicle.>",
subscribe: "nats.service.aquila.vehicle.>"}}
]}
在这里,aquila用户收到请求并回复,但是vizzio用户不能显示响应的确认。
另一方面,如果我对订阅使用通配符works '>‘>,那么它可以正常工作.
用于用户vizzio和test的Config‘>通配符配置
authorization: {
users: [
{ user: aquila, password: $2a$12$9TasTI2C08RXkDs/EsZSIOaPDn.oKBcoNpsz71zY1bVXGSIhfjrQS, permissions: { publish: { deny: ">" },
subscribe: "nats.service.aquila.>", allow_responses: true}},
{ user: vizzio, password: $2a$12$2vFQ3Buqy8i4DNhRoTjJ7ui3njVwDPSnZK2Oi/zLfjMxibOQIuKcS, permissions: { publish: "nats.service.aquila.>",
subscribe: ">"}},
{ user: test, password: $2a$12$tjLLKZgO9JR.tyk.BhperOt8F82xrDJ9fjcOnJEO/5QHXX7OlSz2e, permissions: { publish: "nats.service.aquila.vehicle.>",
subscribe: ">"}}
]}
但是,为vizzio用户订阅nats.service.aquila.>,为测试用户订阅nats.service.aquila.vehicle.>也应该可以工作,但不能工作。
发布于 2022-05-14 20:26:16
您需要为您的用户提供subscribe = "_INBOX.>" (即,而不是subscribe: "nats.service.aquila.>",因为它不需要订阅自己的请求),以便它能够接收对其请求的答复。
有关请求-应答如何在NATS上工作的参考:客户端订阅一个唯一的收件箱主题并发布其对主题的请求,服务器订阅该主题(实际上,一组服务器使用队列组订阅该主题),并发布附在请求上的收件箱主题的答复。
https://stackoverflow.com/questions/69479682
复制相似问题