使用 V4 模型 node.js 的 Azure Functions 绑定 - http 输入和服务总线输出

问题描述 投票:0回答:1

我的 azure 函数接受 HTTP 请求并生成一条发布到服务总线主题的消息。它正在工作,但消息正文将返回到 http 请求者。

我想要的是 httpRequest 获得带有空正文的 200 响应,并且服务总线主题消息包含响应。我似乎无法将它们分开。

我认为线索在于函数选项对象返回属性(参考:MS),但我似乎无法让它工作。

export async function ediReprocessEvent(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`ediReprocessEvent function processed request for url "${request.url}"`);
try {
    let body = await request.json() as IReprocessRequest;
    let result = await ediDocEvent(body, context);
    return {
        status: 200,
        body: result,
    };
} catch (err:any) {
    return {
        status: 500,
        body: err.message,
    };
}

}

app.http('ediReprocessEvent', {
    methods: ['POST'],
    authLevel: 'anonymous',
    handler: ediReprocessEvent,
    return: output.serviceBusTopic({
        topicName: 'MyTopic',
        connection: 'MyConnection',
    }),      
});
node.js azure-functions azureservicebus
1个回答
0
投票

有时,所需要的只是睡个好觉。

以下结果会向调用者返回 204 并将消息发布到主题。

export async function ediReprocessEvent(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
        context.log(`ediReprocessEvent function processed request for url "${request.url}"`);

        try {
            let body = await request.json() as IReprocessRequest;
            let result = await ediDocEvent(body, context);
            context.extraOutputs.set(topicOutput, result)
            return;
        } catch (err:any) {
            return {
                status: 500,
                body: err.message,
            };
        }
    }
    const topicOutput = output.serviceBusTopic({
        topicName: 'normalised-edi-document-prod',
        connection: 'UFProd_SERVICEBUSTOPIC',
    });

app.http('ediReprocessEvent', {
    methods: ['POST'],
    authLevel: 'anonymous',
    handler: ediReprocessEvent,
    extraOutputs: [topicOutput]
});
© www.soinside.com 2019 - 2024. All rights reserved.