首页 > 编程语言 >【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作

【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作

时间:2025-01-14 21:32:33浏览次数:1  
标签:Function ServiceBusReceivedMessage string C# Azure message logger

问题描述

在 C# Azure Function使用 Service Bus 作为触发器时候,在C# 独立工作模式下,说可以支持使用 ServiceBusReceivedMessage 类型作为触发消息的参数类型:

        [Function(nameof(ServiceBusReceivedMessageFunction))]
        [ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
        public string ServiceBusReceivedMessageFunction(
            [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message)
        {
            _logger.LogInformation("Message ID: {id}", message.MessageId);
            _logger.LogInformation("Message Body: {body}", message.Body);
            _logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);

            var outputMessage = $"Output message created at {DateTime.Now}";
            return outputMessage;
        }

但是在实际的测试中,却报错: 

Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.

Error:System.NotSupportedException:

Deserialization of types without a parameterless constructor, a singular parameterized constructor, or a parameterized constructor annotated with 'JsonConstructorAttribute' is not supported.

Type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage'.

Path: $ | LineNumber: 0 | BytePositionInLine: 1.

 

问题解答

这是 Azure Functions 基础结构的限制而导致的行为。由于ServiceBusReceivedMessage 类型无法反序列化为JSON 类型.

所以,可以使用 [string message] 来代替 [ServiceBusReceivedMessage message].

        [Function(nameof(ServiceBusReceivedMessageFunction))]
        [ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
        public string ServiceBusReceivedMessageFunction(
            [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] string message)
        {
            _logger.LogInformation("Message Body: {body}", message);
var outputMessage = $"Output message created at {DateTime.Now}"; return outputMessage; }

 

 

参考资料

Azure Functions 的 Azure 服务总线触发器 : https://docs.azure.cn/zh-cn/azure-functions/functions-bindings-service-bus-trigger?tabs=python-v2%2Cisolated-process%2Cnodejs-v4%2Cextensionv5&pivots=programming-language-csharp#usage

ServiceBusMessageActions raises grpc exception after migrating to Isolated worker in net8.0 in servicebus trigger execution #2761 : https://github.com/Azure/azure-functions-dotnet-worker/issues/2761

 

 

 

标签:Function,ServiceBusReceivedMessage,string,C#,Azure,message,logger
From: https://www.cnblogs.com/lulight/p/18671739

相关文章

  • [ARC070E] NarrowRectangles
    前言模拟赛\(\rm{T4}\),不会比较正常,仅仅只是记录做法然后就是还有每日一练思路首先是朴素的\(\rm{dp}\)令\(f_{i,j}\)表示考虑到第\(i\)行,其中这一行的左端点位置为\(j\)的最优花费容易写出转移\[f_{i,j}\gets\min_{k\in[j-len_{i-1},j+len_i]......
  • 【C++】反向迭代器
    反向迭代器一.源码及框架分析二.反向迭代器实现代码1.ReverseIterator.h2.Vector.h3.List.h4.Test.cpp一.源码及框架分析SGI-STL30版本源代码,反向迭代器实现的核心源码在stl_iterator.h中,反向迭代器是一个适配器,各个容器中再适配出自己的反向迭代器。下面截出vector......
  • 【Javascript Day6】for循环练习及数组
    目录for循环练习数组1.构造数组2.字面量数组创建3.数组的遍历循环4.length的使用规则for循环练习按输入弹窗行数画菱形(奇偶皆可)varpro=prompt("请输入行数")varsum="";for(vari=1;i<=pro;i++){if(i<=parseInt((pro*1+1)/2)......
  • not_the_same_3dsctf_2016 1
    打开ida能看到栈溢出,返回地址填到get_secret函数里面,可以看到get_secret函数是直接读取了flag的,现在就需要把它输出即可。输出我们可以利用代码里面的printf,因为printf从缓冲区打印出东西需要满足条件,比如有换行符或缓冲区已满或程序正常退出。这里我们用exit让程序正常退出,s......
  • k8s OpenLocal存储
    参考项目https://github.com/alibaba/open-localv0.7.1NodeLocalStorage定义NodeLocalStoragecr表示每个k8s节点本地存储资源信息。controller创建后由节点上agent更新status,从而维护存储信息。apiVersion:csi.aliyun.com/v1alpha1kind:NodeLocalStoragespec:nodeName......
  • JavaScript ——节点操作
    节点操作1.创建节点document.createElement('节点')参数:标签名字符串。说明:这些元素原先不存在,是根据需求动态生成的,因此也称为动态创建元素节点。该方法会将创建好的对象作为返回值返回。2.创建文本document.createTextNode() 可以用来创建一个文本节点对象。参数:文......
  • JavaScript详解 ——函数
    1、函数的概念在JS里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码需要大量重复使用函数:就是封装一段可被重复调用执行的代码块。通过代码块可以实现在需要的的重复使用,使用typeof检查一个函数对象时,会返回function函数的封装是把一个或者多个功能通过函数的方式......
  • parallel programming in CUDA C(GPU并行程序实现数组求和 & Julia set)
    前言我们这节会学习到:Ⅰ.CUDA在实现并行性时采用的一种重要方式Ⅱ.用CUDAC编写第一段并行代码一、Summingvector#defineN10voidadd(int*a,int*b,int*c){inttid=0;//这是第0个CPU,因此索引从0开始while(tid<N){c[tid]=a[tid]+b[tid];......
  • Python处理Excel数据的方法,这一篇文章就够了!!
    Excel是数据处理的“瑞士军刀”,在日常工作中扮演着重要角色。然而,面对复杂的Excel文件时,手动处理显然效率低下。那么,如何利用Python高效地处理Excel数据?xlrd、xlwt、openpyxl和pandas是不可或缺的利器。今天,我们就来深度剖析这些工具,教你用Python优雅地操作Excel!......
  • Communication Theory_exp2 MPSK通信系统的设计与性能研究
    目录一、实验目的二、实验原理2-1调制解调原理2-1-1发送端:一组M载波相位调制信号2-1-2接收端:最佳检测器判决方法2-28PSK系统框图三、实验内容3-1设计子函数3-1-18PSK信号生成子函数(对照给出4PSK信号生成子函数)3-1-2添加高斯噪声子函数3-1-3星座图绘制子函数3-......