首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Service Bus计划的消息"in“绑定未定义

Azure Service Bus计划的消息"in“绑定未定义
EN

Stack Overflow用户
提问于 2019-05-30 15:50:18
回答 2查看 436关注 0票数 0

我正在使用@ Azure /服务总线JavaScript库来发布和订阅来自Azure函数的Azure服务总线主题上的消息。为了接收消息,我正在使用Azure Service Bus Topic trigger函数,该函数是从模板创建的,没有任何更改。当我使用sender.send(消息)发布消息时,我可以正常接收到它。

代码语言:javascript
复制
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()调度消息时,我的传入绑定变量在Azure Service Bus主题触发器函数中是未定义的。

代码语言:javascript
复制
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 topic trigger function processed message undefined

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

EN

回答 2

Stack Overflow用户

发布于 2020-01-15 11:49:57

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

解决方法

  • "@azure/amqp-common"库导入DefaultDataTransformer。typescript,import { DefaultDataTransformer } from "@azure/amqp-common";
  • In

  • In typescript,const { DefaultDataTransformer } = require("@azure/amqp-common"); javascript

sdk在调用scheduleMessage()方法发送消息之前更新消息体,如下所示

  1. 实例化sdk使用的数据转换器: sdk:

代码语言:javascript
复制
1. When you need to schedule the message, encode the message body before sending:  
    - `message.body = dt.encode(message.body);`

有关此错误的更多参考资料和调查- Azure/azure-sdk-for-js#6816

票数 1
EN

Stack Overflow用户

发布于 2021-05-21 17:24:39

在新的世界中(azure函数、.net5),您不能再使用代理消息。新的图书馆不能迎合它。

函数应用程序声明不再是消息,而是[Function=您不能再接收‘FunctionName=’或字节。但只有一个字符串!。

示例;

函数(“TestFA”)公共异步任务运行(ServiceBusTrigger(topicName,subscriberName,Connection =?)

例如props = executionContext.BindingContext.BindingData.Where(x => x.Key == "UserProperties").FirstOrDefault();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56373956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档