Azure 函数 - 带有 CreateSubscriptionStream 的 GraphQLHttpClient

Posted

技术标签:

【中文标题】Azure 函数 - 带有 CreateSubscriptionStream 的 GraphQLHttpClient【英文标题】:Azure function - GraphQLHttpClient with CreateSubscriptionStream 【发布时间】:2021-10-18 13:17:28 【问题描述】:

我有一个要求,比如我想使用 CreateSubscriptionStream 将 GraphQLHttpClient 订阅到函数应用中。


stream.Subscribe(
                response =>
                
                    Console.WriteLine($"RaceUpdatesSubscription message: \"response.Data\" ");
                    SendMsgToTopic.SendMessageToTopicAsync(response.Data, _serviceBusConnectionString, _raceUpdatesTopicName).Wait();
                ,
                exception => Console.WriteLine($"message RaceUpdatesSubscription stream failed: exception"),
                () => Console.WriteLine($"message RaceUpdatesSubscription stream completed")
            );

我怎样才能做到这一点就像有什么方法可以从 azure 函数中使用任何触发器或注册它以进行订阅(发生任何更改然后我需要听)

现在它可以在控制台应用程序中正常工作,但尝试使用函数应用程序。

【问题讨论】:

您可以查看Bindings 来创建自定义输入触发器绑定 【参考方案1】:

将 CreateSubscriptionStream 创建到函数应用中。以下是订阅详情

// To use NewtonsoftJsonSerializer, add a reference to NuGet package GraphQL.Client.Serializer.Newtonsoft
var graphQLClient = new GraphQLHttpClient("https://api.example.com/graphql", new NewtonsoftJsonSerializer());

下面是使用订阅的代码

public class UserJoinedSubscriptionResult 
    public ChatUser UserJoined  get; set; 

    public class ChatUser 
        public string DisplayName  get; set; 
        public string Id  get; set; 
    

下面是创建订阅的代码

var userJoinedRequest = new GraphQLRequest 
    Query = @"
    subscription 
        userJoined
            displayName
            id
        
    "
;

IObservable<GraphQLResponse<UserJoinedSubscriptionResult>> subscriptionStream 
    = client.CreateSubscriptionStream<UserJoinedSubscriptionResult>(userJoinedRequest);

var subscription = subscriptionStream.Subscribe(response => 
    
        Console.WriteLine($"user 'response.Data.UserJoined.DisplayName' joined")
    );

要获得有关 CreateSubscriptionStream 的完整信息,请参阅GraphQL

【讨论】:

我已经编写了此代码块,但问题是如何将此订阅与 azure 函数应用程序一起使用。我找到了解决方案,我使用 FunctionsStartup 的 azure configure 方法订阅 GraphQl 更改。谢谢 [assembly: FunctionsStartup(typeof(MyNamespace.Startup))] namespace MyNamespace public class Startup : FunctionsStartup public override void Configure(IFunctionsHostBuilder builder) // 在这里注册 grapgql 订阅 ''

以上是关于Azure 函数 - 带有 CreateSubscriptionStream 的 GraphQLHttpClient的主要内容,如果未能解决你的问题,请参考以下文章

带有 blobtrigger 的 Azure 函数 - 更新元数据

带有 QueueTrigger 的 Azure 函数:是不是可以仅配置存储帐户 URL 并使用托管标识访问队列?

带有数据库的 Azure 函数连接字符串 使用实体框架的第一种方法

如何在 azure 函数 http 触发器中触发失败,并带有自定义错误响应

带有 Cosmos DB 绑定的 Azure 函数返回格式化的 DateTime?

带有 beta 运行时的 Javascript Azure 函数不返回错误 HTTP 响应的响应正文