相关疑难解决方法(0)

如何使用 azure 服务总线 5.0.0 在 C# azure 函数中手动处理消息完成

我正在编写一个 Azure 函数来获取 Azure 服务总线中的消息。我想手动处理任何异常("autoCompleteMessages": false)无法弄清楚如何将完整或放弃发送回服务队列。

尝试过选项1:

[FunctionName("SBQ_F1_VC")]
public static async Task Run([ServiceBusTrigger("sbqfn1", Connection = "BrnlTest1_SERVICEBUS")]
    ServiceBusReceivedMessage msg, ILogger log)
{
//.....

    if(!Int32.TryParse(msg.ApplicationProperties.GetValueOrDefault("vid").ToString(), out vid))
    {   await using ServiceBusClient client = new ServiceBusClient(Environment.GetEnvironmentVariable("BrnlTest1_SERVICEBUS"));
        ServiceBusReceiver msgRcvr = client.CreateReceiver(Environment.GetEnvironmentVariable("queueName"), new ServiceBusReceiverOptions()); 
        //await msgRcvr.RenewMessageLockAsync(msg);
        await msgRcvr.AbandonMessageAsync(msg);  //vid = 0;
    }

//.....
}
Run Code Online (Sandbox Code Playgroud)

错误选项 1

System.Private.CoreLib: Exception while executing function: SBQ_F1_VC. Azure.Messaging.ServiceBus: The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue, or …
Run Code Online (Sandbox Code Playgroud)

c# azure azureservicebus azure-functions

11
推荐指数
1
解决办法
8036
查看次数

涉及 Microsoft.Azure.ServiceBus.Core.MessageReceiver 时如何进行单元测试

我正在尝试对与 MessageReceiver 类具有依赖关系的 Azure 函数进行单元测试。类定义如下:

public class MessageReceiver : ClientEntity, IMessageReceiver, IReceiverClient, IClientEntity
Run Code Online (Sandbox Code Playgroud)

我需要moq的方法属于接口IMessageReceiver

我尝试模拟 MessageReceiver 类,并设置 CompleteAsync 方法,但出现错误:

Non-overridable members (here: MessageReceiver.CompleteAsync) may not be used in setup / verification expressions.
Run Code Online (Sandbox Code Playgroud)

据我所知,这意味着非虚拟、抽象或重写的方法不能被重写/最小起订量。我尝试手动创建一个子类并使用定义中的新关键工作声明一个方法 CompleteAsync,

public new Task CompleteAsync(string lockToken)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,代码会在调用 CompleteAsync 方法时引发错误:

Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Run Code Online (Sandbox Code Playgroud)

但我认为它不起作用,因为我尝试按 F11 进入该方法,但我的方法没有被调用...有什么想法或建议吗?

c# unit-testing azure-functions

3
推荐指数
2
解决办法
4639
查看次数

使用 ServiceBusTrigger 对 Azure 函数进行单元和集成测试

我有一个由Azure Service Bus Queue触发的 Azure 函数。

功能如下。

  1. 如何对这个 Run 方法进行单元测试?
  2. 以及如何通过从AddContact触发器开始、检查方法中的逻辑以及使用输出绑定发送到 blob 的数据来完成集成测试?
    public static class AddContactFunction
    {
        [FunctionName("AddContactFunction")]
        public static void Run([ServiceBusTrigger("AddContact", Connection = "AddContactFunctionConnectionString")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
Run Code Online (Sandbox Code Playgroud)

unit-testing azure-servicebus-queues azure-functions

0
推荐指数
1
解决办法
2235
查看次数