Azure functions Azure函数-无法使用SignalEntityAsync触发EntityTrigger
正如在标题中所说,我对EntityTrigger函数有一个问题 我有一个ServiceBustigger(工作正常)用来触发第二个Azure functions Azure函数-无法使用SignalEntityAsync触发EntityTrigger,azure-functions,azure-durable-functions,azure-function-async,Azure Functions,Azure Durable Functions,Azure Function Async,正如在标题中所说,我对EntityTrigger函数有一个问题 我有一个ServiceBustigger(工作正常)用来触发第二个 [FunctionName(nameof(MaterializationAggregatorFunction.TopicStart))] public static async Task TopicStart( [ServiceBusTrigger("%FirstServiceBusTopicName%", "%FirstSer
[FunctionName(nameof(MaterializationAggregatorFunction.TopicStart))]
public static async Task TopicStart(
[ServiceBusTrigger("%FirstServiceBusTopicName%", "%FirstServiceBusSubscriptionName%", Connection = "ServiceBusConnectionString")]
ReportStartupDataExtended startupData
, [DurableClient] IDurableClient entityClient
, ILogger log)
{
var entityId = new EntityId(nameof(MaterializationAggregatorFunction.StateFunction), startupData.CorrelationId);
await entityClient.SignalEntityAsync(entityId, "Page", startupData);
}
[FunctionName(nameof(MaterializationAggregatorFunction.StateFunction))]
public async Task StateFunction([EntityTrigger] IDurableEntityContext ctx
, [ServiceBus("%SecondServiceBusTopicName%", EntityType.Topic, Connection = "ServiceBusConnectionString")]
IAsyncCollector<ReportStartupDataExtended> outputServiceBus
, ILogger log)
{
var currentValue = ctx.GetState(
() => new FunctionState(
Environment.GetEnvironmentVariable("Pages").Split(";", StringSplitOptions.RemoveEmptyEntries)
));
var input = ctx.GetInput<ReportStartupDataExtended>();
currentValue.Status.AddOrUpdate(input.PageName, input.Status, (k, v) => input.Status);
ctx.SetState(currentValue);
if (currentValue.IsCompleted)
{
log.LogInformation("Is completed!!!! :)");
await outputServiceBus.AddAsync(input);
}
else
{
log.LogInformation("Is not completed!!!! :(");
}
}
[FunctionName(nameof(MaterializationAggregatorFunction.TopicStart))]
公共静态异步任务TopicStart(
[ServiceBusTrigger(“%FirstServiceBusTopicName%”,“%FirstServiceBusSubscriptionName%”,Connection=“ServiceBusConnectionString”)]
ReportStartupDataExtended startupData
,[DurableClient]IDDurableClient entityClient
,ILogger日志)
{
var entityId=new entityId(nameof(MaterializationAggregatorFunction.StateFunction),startupData.CorrelationId);
等待entityClient.SignalEntityAsync(entityId,“页面”,startupData);
}
[FunctionName(nameof(MaterializationAggregatorFunction.StateFunction))]
公共异步任务状态函数([EntityTrigger]IDurableEntityContext ctx)
,[ServiceBus(“%SecondServiceBusTopicName%”,EntityType.Topic,Connection=“ServiceBusConnectionString”)]
IAsyncCollector输出服务总线
,ILogger日志)
{
var currentValue=ctx.GetState(
()=>新函数状态(
Environment.GetEnvironmentVariable(“Pages”).Split(“;”,StringSplitOptions.RemoveEmptyEntries)
));
var input=ctx.GetInput();
currentValue.Status.AddOrUpdate(input.PageName,input.Status,(k,v)=>input.Status);
设置状态(当前值);
如果(currentValue.IsCompleted)
{
log.LogInformation(“已完成!!!!:)”;
等待outputServiceBus.AddAsync(输入);
}
其他的
{
log.LogInformation(“未完成!!!!:(”);
}
}
调试时我可以使用的是,每次消息都会调用“TopicStart”函数,但“SignalEntityAsync”似乎什么也不做,即使在运行时我没有收到错误
有什么建议吗?
提前感谢大家