public PubsubGameBoardQueue( IOptions <PubsubGameBoardQueueOptions> options, ILogger <PubsubGameBoardQueue> logger) { _options = options; _logger = logger; _publisherApi = PublisherServiceApiClient.Create(); var subscriberApi = SubscriberServiceApiClient.Create(); _publisherClient = PublisherClient.Create(MyTopic, new[] { _publisherApi }); _subscriberClient = SubscriberClient.Create(MySubscription, new[] { subscriberApi }, new SubscriberClient.Settings() { StreamAckDeadline = TimeSpan.FromMinutes(1) }); // Create the Topic and Subscription. try { _publisherApi.CreateTopic(MyTopic); _logger.LogInformation("Created {0}.", MyTopic.ToString()); } catch (RpcException e) when(e.Status.StatusCode == StatusCode.AlreadyExists) { // Already exists. That's fine. } try { subscriberApi.CreateSubscription(MySubscription, MyTopic, pushConfig: null, ackDeadlineSeconds: 10); _logger.LogInformation("Created {0}.", MySubscription.ToString()); } catch (RpcException e) when(e.Status.StatusCode == StatusCode.AlreadyExists) { // Already exists. That's fine. } }