NATS.IO NATSNoRespondersException

问题描述

我是 NATS 的新手,我已经在 NetCore 5.0 中接管了一个几乎完成的应用程序。 当我启动应用程序时,一个连接被设置为一个 docker NATS 服务器,这个属性在 appsettings 中设置。

"NatsSettings": {
  "Url": "nats://localhost:4222","StreamName": "nats-server","Timeout": 10000,"Verbose": true,"StreamReceivedSubject": "TestData.received.Subject","ReceivedConsumerName": "TestData.Received.Consumer.Name","ConsumerReceivedSubject": "TestData.Consumer.Received.Subject","ConsumerReceivedFilter": "TestData.Received.Filter","Subjects": [
    "TestData.*"
  ]
}

我在连接设置中遗漏了什么? 我不断收到的错误消息是 NATS.Client.NATSnorespondersException: '没有响应者可用于请求。'

有人可以帮我吗?

韩国 约根

解决方法

更具体地说,这就是它发生的地方

    private bool StreamExists(IConnection connection,string streamName)
    {
        string json = "{\"offset\":0}";
        Msg message = connection.Request(NatsConstants.STREAMNAMESCMD,Encoding.UTF8.GetBytes(json),3000); // HERE
        string responseString = Encoding.UTF8.GetString(message.Data);

        return responseString.Contains(streamName);
    }
,

当服务器知道当前没有进程在监听您的请求时,您会得到一个“无响应者”,而不是发布请求并在一段时间后超时,因为没有人在监听这些请求此例外是为了让您立即知道目前没有人为您的请求提供服务。

https://docs.nats.io/whats_new_22#react-quicker-with-no-responder-notifications