For IntelliJ IDEA and
Android Studio


/** Example of getting a subscription policy. */ public Policy getSubscriptionPolicy(String subscriptionId) throws Exception { // [START pubsub_get_subscription_policy] try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { SubscriptionName subscriptionName = SubscriptionName.of(projectId, subscriptionId); Policy policy = subscriptionAdminClient.getIamPolicy(subscriptionName.toString()); if (policy == null) { // subscription was not found } return policy; } // [END pubsub_get_subscription_policy] }
/** Example of replacing a subscription policy. */ public Policy replaceSubscriptionPolicy(String subscriptionId) throws Exception { // [START pubsub_set_subscription_policy] try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { SubscriptionName subscriptionName = SubscriptionName.of(projectId, subscriptionId); Policy policy = subscriptionAdminClient.getIamPolicy(subscriptionName.toString()); // Create a role => members binding Binding binding = Binding.newBuilder() .setRole(Role.viewer().toString()) .addMembers(Identity.allAuthenticatedUsers().toString()) .build(); //Update policy Policy updatedPolicy = policy.toBuilder().addBindings(binding).build(); updatedPolicy = subscriptionAdminClient.setIamPolicy(subscriptionName.toString(), updatedPolicy); return updatedPolicy; } // [END pubsub_set_subscription_policy] }
@Override public PullRequest createPullRequest(String subscriptionName, Integer maxMessages, Boolean returnImmediately) { Assert.hasLength(subscriptionName, "The subscription name must be provided."); PullRequest.Builder pullRequestBuilder = PullRequest.newBuilder().setSubscription( SubscriptionName.of(this.projectId, subscriptionName).toString()); if (maxMessages != null) { pullRequestBuilder.setMaxMessages(maxMessages); } if (returnImmediately != null) { pullRequestBuilder.setReturnImmediately(returnImmediately); } return pullRequestBuilder.build(); }
/** * Gets the configuration details of a subscription. * * <p>Sample code: * * <pre><code> * try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { * SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); * Subscription response = subscriptionAdminClient.getSubscription(subscription); * } * </code></pre> * * @param subscription The name of the subscription to get. Format is * `projects/{project}/subscriptions/{sub}`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Subscription getSubscription(SubscriptionName subscription) { GetSubscriptionRequest request = GetSubscriptionRequest.newBuilder().setSubscription(subscription.toString()).build(); return getSubscription(request); }
@Test @SuppressWarnings("all") public void streamingPullTest() throws Exception { ReceivedMessage receivedMessagesElement = ReceivedMessage.newBuilder().build(); List<ReceivedMessage> receivedMessages = Arrays.asList(receivedMessagesElement); StreamingPullResponse expectedResponse = StreamingPullResponse.newBuilder().addAllReceivedMessages(receivedMessages).build(); mockSubscriber.addResponse(expectedResponse); SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); int streamAckDeadlineSeconds = 1875467245; StreamingPullRequest request = StreamingPullRequest.newBuilder() .setSubscription(subscription.toString()) .setStreamAckDeadlineSeconds(streamAckDeadlineSeconds) .build(); MockStreamObserver<StreamingPullResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<StreamingPullRequest, StreamingPullResponse> callable = client.streamingPullCallable(); ApiStreamObserver<StreamingPullRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); requestObserver.onCompleted(); List<StreamingPullResponse> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
/** Example of testing whether the caller has the provided permissions on a subscription. */ public TestIamPermissionsResponse testSubscriptionPermissions(String subscriptionId) throws Exception { // [START pubsub_test_subscription_permissions] try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { List<String> permissions = new LinkedList<>(); permissions.add("pubsub.subscriptions.get"); SubscriptionName subscriptionName = SubscriptionName.of(projectId, subscriptionId); TestIamPermissionsResponse testedPermissions = topicAdminClient.testIamPermissions(subscriptionName.toString(), permissions); return testedPermissions; } // [END pubsub_test_subscription_permissions] }
@Test @SuppressWarnings("all") public void getSubscriptionTest() { SubscriptionName name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); TopicNameOneof topic = TopicNameOneof.from(TopicName.of("[PROJECT]", "[TOPIC]")); int ackDeadlineSeconds = 2135351438; boolean retainAckedMessages = false; Subscription expectedResponse = Subscription.newBuilder() .setName(name.toString()) .setTopic(topic.toString()) .setAckDeadlineSeconds(ackDeadlineSeconds) .setRetainAckedMessages(retainAckedMessages) .build(); mockSubscriber.addResponse(expectedResponse); SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); Subscription actualResponse = client.getSubscription(subscription); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockSubscriber.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetSubscriptionRequest actualRequest = (GetSubscriptionRequest) actualRequests.get(0); Assert.assertEquals(subscription, SubscriptionName.parse(actualRequest.getSubscription())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
/** * Deletes an existing subscription. All messages retained in the subscription are immediately * dropped. Calls to `Pull` after deletion will return `NOT_FOUND`. After a subscription is * deleted, a new one may be created with the same name, but the new one has no association with * the old subscription or its topic unless the same topic is specified. * * <p>Sample code: * * <pre><code> * try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { * SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); * subscriptionAdminClient.deleteSubscription(subscription); * } * </code></pre> * * @param subscription The subscription to delete. Format is * `projects/{project}/subscriptions/{sub}`. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteSubscription(SubscriptionName subscription) { DeleteSubscriptionRequest request = DeleteSubscriptionRequest.newBuilder().setSubscription(subscription.toString()).build(); deleteSubscription(request); }
@Test @SuppressWarnings("all") public void streamingPullExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSubscriber.addException(exception); SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); int streamAckDeadlineSeconds = 1875467245; StreamingPullRequest request = StreamingPullRequest.newBuilder() .setSubscription(subscription.toString()) .setStreamAckDeadlineSeconds(streamAckDeadlineSeconds) .build(); MockStreamObserver<StreamingPullResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<StreamingPullRequest, StreamingPullResponse> callable = client.streamingPullCallable(); ApiStreamObserver<StreamingPullRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); try { List<StreamingPullResponse> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } }
Subscription expectedResponse = Subscription.newBuilder() .setName(name2.toString()) .setTopic(topic2.toString()) .setAckDeadlineSeconds(ackDeadlineSeconds2)
String subscriptionName = SubscriptionName.of(projectId, subscriptionId).toString(); PullRequest pullRequest = PullRequest.newBuilder()
.setSubscription(subscription.toString()) .setReturnImmediately(returnImmediately) .setMaxMessages(maxMessages)
.setSubscription(subscription.toString()) .addAllAckIds(ackIds) .setAckDeadlineSeconds(ackDeadlineSeconds)
.setSubscription(subscription.toString()) .addAllAckIds(ackIds) .build();
.setSubscription(subscription.toString()) .setPushConfig(pushConfig) .build();