【问题标题】:Azure function - GraphQLHttpClient with CreateSubscriptionStreamAzure 函数 - 带有 CreateSubscriptionStream 的 GraphQLHttpClient
【发布时间】: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 来创建自定义输入触发器绑定

标签: c# azure .net-core azure-functions graphql-subscriptions


【解决方案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 订阅 } } }''
猜你喜欢
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多