1

我正在使用以下 javascript 代码在 azure 服务总线中列出一个主题。

库和版本 @azure/service-bus 1.1.2

        const sbClient = ServiceBusClient.createFromConnectionString(
        config.merchant_event.connection_string
         );
        const topicClient = sbClient.createSubscriptionClient(
         config.merchant_event.topic_name,
         config.merchant_event.subcription_name
       );

  const receiver = topicClient.createReceiver(ReceiveMode.ReceiveAndDelete);

  receiver.registerMessageHandler(
      merchantEventMessageHandler,
      merchantEventErrorHandler
    );

应用程序启动后,它工作正常。但如果任何情况下连接丢失或连接超时,监听器将停止监听。

你能告诉我如何解决这个问题。如果连接丢失,是否有任何重试机制可以重新连接连接。

4

1 回答 1

0

版本 1

如果客户端由于连接丢失而进入错误状态,您需要在版本 1 @azure/service-busSDK 中重新创建客户端/接收器。这是 GitHub 上的一个相关问题,讨论registerMessageHandler和重试 - azure-sdk-for-js/issues/11914

但是,我建议您改用 SDKsubscribe版本 7 中提供的方法。@azure/service-bus

版本 7

subscribe如果您想永远接收消息,您可以利用该方法(您可以根据需要停止接收)。

subscribe优雅地处理断开连接和重新连接,甚至能够从诸如实体未找到之类的致命错误中恢复。

您可以参考使用SDK 7 版本的receiveMessagesStreaming.ts示例代码。@azure/service-bus

我知道这是一个迟到的回复,但以防万一有人遇到旧的服务总线节点 SDK 的问题并登陆这里,请参阅下面的链接。

最新版本 7.0.0@azure/service-bus已于近期发布。

于 2020-12-14T19:45:04.703 回答