gpt4 book ai didi

javascript - Azure 服务总线计划消息 "in"绑定(bind)未定义

转载 作者:行者123 更新时间:2023-12-02 23:33:50 24 4
gpt4 key购买 nike

我正在使用 @azure/service-bus JavaScript 库从 Azure Functions 发布和订阅 Azure 服务总线主题上的消息。为了接收消息,我使用从模板创建的 Azure 服务总线主题触发器函数,无需进行任何更改。当我使用 sender.send(message) 发布消息时,我收到的消息很好。

import { AzureFunction, Context, HttpRequest } from "@azure/functions"
import * as sb from "@azure/service-bus"

const PublishToServiceBus: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
const eventDoc = req.body;
const serviceBusConnectionString = process.env["ServiceBusConnection"];
const topicName = process.env["TopicName"]';
const sbClient = sb.ServiceBusClient.createFromConnectionString(serviceBusConnectionString);
const topicClient = sbClient.createTopicClient(topicName);
const sender = topicClient.createSender();

const message: sb.SendableMessageInfo = { body: eventDoc };

// this works
sender.send(message);

// this creates message without body?
const scheduledEnqueueTimeUtc = new Date(Date.now() + 10000);
sender.scheduleMessages(scheduledEnqueueTimeUtc, [message]);

};
export default PublishToServiceBus;

但是当我使用 sender.scheduleMessages() 安排消息时,我的传入绑定(bind)变量在 Azure 服务总线主题触发函数中未定义。

import { AzureFunction, Context } from "@azure/functions"

const serviceBusTopicTrigger: AzureFunction = async function (context: Context, mySbMsg: any): Promise<void> {
context.log('ServiceBus topic trigger function processed message', mySbMsg);
};
export default serviceBusTopicTrigger;

输出:ServiceBus主题触发函数处理的消息未定义

这是库的问题还是我做错了什么?

最佳答案

该问题是由 @azure/service-bus sdk 中的错误引起的。

解决方法

  • "@azure/amqp-common" 导入 DefaultDataTransformer图书馆。
    • 在 typescript 中,从“@azure/amqp-common”导入 { DefaultDataTransformer };
    • 在 JavaScript 中,const { DefaultDataTransformer } = require("@azure/amqp-common");
  • 在调用 scheduleMessage() 方法发送消息之前更新消息正文,如下所示
    1. 实例化 sdk 使用的数据转换器:
      • const dt = new DefaultDataTransformer();
    2. 当您需要安排消息时,请在发送前对消息正文进行编码:
      • message.body = dt.encode(message.body);

围绕此错误的更多引用和调查 - Azure/azure-sdk-for-js#6816

关于javascript - Azure 服务总线计划消息 "in"绑定(bind)未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com