forked from googleapis/java-pubsub
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: Add samples and tests for ingestion from Kafka sources (googlea…
…pis#2315) * docs: Add samples and tests for ingestion from Kafka sources * docs: Styles fixes for samples/tests
- Loading branch information
1 parent
5e80b57
commit eea603b
Showing
4 changed files
with
355 additions
and
2 deletions.
There are no files selected for viewing
75 changes: 75 additions & 0 deletions
75
samples/snippets/src/main/java/pubsub/CreateTopicWithAwsMskIngestionExample.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
/* | ||
* Copyright 2025 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package pubsub; | ||
|
||
// [START pubsub_create_topic_with_aws_msk_ingestion] | ||
|
||
import com.google.cloud.pubsub.v1.TopicAdminClient; | ||
import com.google.cloud.pubsub.v1.TopicAdminSettings; | ||
import com.google.pubsub.v1.IngestionDataSourceSettings; | ||
import com.google.pubsub.v1.Topic; | ||
import com.google.pubsub.v1.TopicName; | ||
import java.io.IOException; | ||
|
||
public class CreateTopicWithAwsMskIngestionExample { | ||
public static void main(String... args) throws Exception { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String topicId = "your-topic-id"; | ||
// AWS MSK ingestion settings. | ||
String clusterArn = "cluster-arn"; | ||
String mskTopic = "msk-topic"; | ||
String awsRoleArn = "aws-role-arn"; | ||
String gcpServiceAccount = "gcp-service-account"; | ||
|
||
createTopicWithAwsMskIngestionExample( | ||
projectId, topicId, clusterArn, mskTopic, awsRoleArn, gcpServiceAccount); | ||
} | ||
|
||
public static void createTopicWithAwsMskIngestionExample( | ||
String projectId, | ||
String topicId, | ||
String clusterArn, | ||
String mskTopic, | ||
String awsRoleArn, | ||
String gcpServiceAccount) | ||
throws IOException { | ||
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { | ||
TopicName topicName = TopicName.of(projectId, topicId); | ||
|
||
IngestionDataSourceSettings.AwsMsk awsMsk = | ||
IngestionDataSourceSettings.AwsMsk.newBuilder() | ||
.setClusterArn(clusterArn) | ||
.setTopic(mskTopic) | ||
.setAwsRoleArn(awsRoleArn) | ||
.setGcpServiceAccount(gcpServiceAccount) | ||
.build(); | ||
IngestionDataSourceSettings ingestionDataSourceSettings = | ||
IngestionDataSourceSettings.newBuilder().setAwsMsk(awsMsk).build(); | ||
|
||
Topic topic = | ||
topicAdminClient.createTopic( | ||
Topic.newBuilder() | ||
.setName(topicName.toString()) | ||
.setIngestionDataSourceSettings(ingestionDataSourceSettings) | ||
.build()); | ||
|
||
System.out.println("Created topic with AWS MSK ingestion settings: " + topic.getAllFields()); | ||
} | ||
} | ||
} | ||
// [END pubsub_create_topic_with_aws_msk_ingestion] |
93 changes: 93 additions & 0 deletions
93
samples/snippets/src/main/java/pubsub/CreateTopicWithAzureEventHubsIngestionExample.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
/* | ||
* Copyright 2025 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package pubsub; | ||
|
||
// [START pubsub_create_topic_with_azure_event_hubs_ingestion] | ||
|
||
import com.google.cloud.pubsub.v1.TopicAdminClient; | ||
import com.google.cloud.pubsub.v1.TopicAdminSettings; | ||
import com.google.pubsub.v1.IngestionDataSourceSettings; | ||
import com.google.pubsub.v1.Topic; | ||
import com.google.pubsub.v1.TopicName; | ||
import java.io.IOException; | ||
|
||
public class CreateTopicWithAzureEventHubsIngestionExample { | ||
public static void main(String... args) throws Exception { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String topicId = "your-topic-id"; | ||
// Azure Event Hubs ingestion settings. | ||
String resourceGroup = "resource-group"; | ||
String namespace = "namespace"; | ||
String eventHub = "event-hub"; | ||
String clientId = "client-id"; | ||
String tenantId = "tenant-id"; | ||
String subscriptionId = "subscription-id"; | ||
String gcpServiceAccount = "gcp-service-account"; | ||
|
||
createTopicWithAzureEventHubsIngestionExample( | ||
projectId, | ||
topicId, | ||
resourceGroup, | ||
namespace, | ||
eventHub, | ||
clientId, | ||
tenantId, | ||
subscriptionId, | ||
gcpServiceAccount); | ||
} | ||
|
||
public static void createTopicWithAzureEventHubsIngestionExample( | ||
String projectId, | ||
String topicId, | ||
String resourceGroup, | ||
String namespace, | ||
String eventHub, | ||
String clientId, | ||
String tenantId, | ||
String subscriptionId, | ||
String gcpServiceAccount) | ||
throws IOException { | ||
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { | ||
TopicName topicName = TopicName.of(projectId, topicId); | ||
|
||
IngestionDataSourceSettings.AzureEventHubs azureEventHubs = | ||
IngestionDataSourceSettings.AzureEventHubs.newBuilder() | ||
.setResourceGroup(resourceGroup) | ||
.setNamespace(namespace) | ||
.setEventHub(eventHub) | ||
.setClientId(clientId) | ||
.setTenantId(tenantId) | ||
.setSubscriptionId(subscriptionId) | ||
.setGcpServiceAccount(gcpServiceAccount) | ||
.build(); | ||
IngestionDataSourceSettings ingestionDataSourceSettings = | ||
IngestionDataSourceSettings.newBuilder().setAzureEventHubs(azureEventHubs).build(); | ||
|
||
Topic topic = | ||
topicAdminClient.createTopic( | ||
Topic.newBuilder() | ||
.setName(topicName.toString()) | ||
.setIngestionDataSourceSettings(ingestionDataSourceSettings) | ||
.build()); | ||
|
||
System.out.println( | ||
"Created topic with Azure Event Hubs ingestion settings: " + topic.getAllFields()); | ||
} | ||
} | ||
} | ||
// [END pubsub_create_topic_with_azure_event_hubs_ingestion] |
85 changes: 85 additions & 0 deletions
85
samples/snippets/src/main/java/pubsub/CreateTopicWithConfluentCloudIngestionExample.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* Copyright 2025 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package pubsub; | ||
|
||
// [START pubsub_create_topic_with_confluent_cloud_ingestion] | ||
|
||
import com.google.cloud.pubsub.v1.TopicAdminClient; | ||
import com.google.cloud.pubsub.v1.TopicAdminSettings; | ||
import com.google.pubsub.v1.IngestionDataSourceSettings; | ||
import com.google.pubsub.v1.Topic; | ||
import com.google.pubsub.v1.TopicName; | ||
import java.io.IOException; | ||
|
||
public class CreateTopicWithConfluentCloudIngestionExample { | ||
public static void main(String... args) throws Exception { | ||
// TODO(developer): Replace these variables before running the sample. | ||
String projectId = "your-project-id"; | ||
String topicId = "your-topic-id"; | ||
// Confluent Cloud ingestion settings. | ||
String bootstrapServer = "bootstrap-server"; | ||
String clusterId = "cluster-id"; | ||
String confluentTopic = "confluent-topic"; | ||
String identityPoolId = "identity-pool-id"; | ||
String gcpServiceAccount = "gcp-service-account"; | ||
|
||
createTopicWithConfluentCloudIngestionExample( | ||
projectId, | ||
topicId, | ||
bootstrapServer, | ||
clusterId, | ||
confluentTopic, | ||
identityPoolId, | ||
gcpServiceAccount); | ||
} | ||
|
||
public static void createTopicWithConfluentCloudIngestionExample( | ||
String projectId, | ||
String topicId, | ||
String bootstrapServer, | ||
String clusterId, | ||
String confluentTopic, | ||
String identityPoolId, | ||
String gcpServiceAccount) | ||
throws IOException { | ||
try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { | ||
TopicName topicName = TopicName.of(projectId, topicId); | ||
|
||
IngestionDataSourceSettings.ConfluentCloud confluentCloud = | ||
IngestionDataSourceSettings.ConfluentCloud.newBuilder() | ||
.setBootstrapServer(bootstrapServer) | ||
.setClusterId(clusterId) | ||
.setTopic(confluentTopic) | ||
.setIdentityPoolId(identityPoolId) | ||
.setGcpServiceAccount(gcpServiceAccount) | ||
.build(); | ||
IngestionDataSourceSettings ingestionDataSourceSettings = | ||
IngestionDataSourceSettings.newBuilder().setConfluentCloud(confluentCloud).build(); | ||
|
||
Topic topic = | ||
topicAdminClient.createTopic( | ||
Topic.newBuilder() | ||
.setName(topicName.toString()) | ||
.setIngestionDataSourceSettings(ingestionDataSourceSettings) | ||
.build()); | ||
|
||
System.out.println( | ||
"Created topic with Confluent Cloud ingestion settings: " + topic.getAllFields()); | ||
} | ||
} | ||
} | ||
// [END pubsub_create_topic_with_confluent_cloud_ingestion] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters