0

我在 azure 中创建了一个主题和订阅。当我尝试在主题中推送我的消息并通过订阅检索它时,我无法获取消息。消息是否存储在队列中。我的消息没有被发布吗?

推入主题代码

 const topicName = 'xxxxxxxxxxxxx';
    async function main(){
      const sbClient = ServiceBusClient.createFromConnectionString(connectionString); 
      const topicClient = sbClient.createTopicClient(topicName);
      const sender = topicClient.createSender();

        try {

              const message= {
                body: req.body.message,
                label: `test`,

              };
              console.log(`Sending message: ${message.body}`);
              await sender.send(message);

              await topicClient.close();
              res.send(message.body)

          } finally {
            await sbClient.close();
          }

    }

    main()
    .catch((err) => {
      console.log("Error occurred: ", err);
    });

通过订阅代码获取消息

const topicName = 'xxxxxxxxx';
  const subscriptionName = "subsTest1"; 

  async function main(){

    const sbClient = ServiceBusClient.createFromConnectionString(connectionString); 
    const subscriptionClient = sbClient.createSubscriptionClient(topicName, subscriptionName);
    const receiver = subscriptionClient.createReceiver(ReceiveMode.receiveAndDelete);

    try {

      const messages = await receiver.receiveMessages(10);

      res.send(messages)
      console.log("Received messages:");
      console.log(messages.map(message => message.body));

      await subscriptionClient.close();
    } finally {
      await sbClient.close();
    }
  }

  main().catch((err) => {
    console.log("Error occurred: ", err);
  });
4

2 回答 2

0

我测试你的代码,在我的测试中我删除了请求和响应部分,我可以发送和接收消息。由于在您的测试中您不知道您是否成功发送消息,您可以使用ServiceBusExplorer查看消息。请记住,当从订阅接收消息时它很慢。

下面是我的测试结果。查看我的日志,您可以找到它不会立即收到消息的间隔。

在此处输入图像描述

在此处输入图像描述

于 2019-12-26T08:26:47.983 回答
0

运行您的代码以将消息推送到主题。然后,您可以在 Azure 门户中查看订阅以查看消息是否存在。这至少可以确认您的代码是否正确发送消息。

于 2019-12-25T18:05:23.277 回答