diff --git a/CHANGELOG.md b/CHANGELOG.md index 3919efb3d..e574a0bcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [1.105.0](https://www.github.com/googleapis/java-pubsub/compare/v1.104.1...v1.105.0) (2020-04-13) + + +### Features + +* add interfaces for cloud pubsub publishers and subscribers ([#134](https://www.github.com/googleapis/java-pubsub/issues/134)) ([89fcc88](https://www.github.com/googleapis/java-pubsub/commit/89fcc8848cc7d421e8dde9b7dca28a6940d8386f)) + + +### Documentation + +* update libraries-bom ([#140](https://www.github.com/googleapis/java-pubsub/issues/140)) ([d8239bd](https://www.github.com/googleapis/java-pubsub/commit/d8239bdc080d0ef595bac90451485b1d3d50f266)) + ### [1.104.1](https://www.github.com/googleapis/java-pubsub/compare/v1.104.0...v1.104.1) (2020-04-08) diff --git a/README.md b/README.md index ca3d245d7..213395c8f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ If you are using Maven with a BOM, add this to your pom.xml file: com.google.cloud libraries-bom - 2.9.0 + 4.4.1 pom import @@ -37,16 +37,16 @@ If you are using Maven without a BOM, add this to your pom.xml file com.google.cloud google-cloud-pubsub - 1.104.1 + 1.105.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-pubsub:1.104.1' +compile 'com.google.cloud:google-cloud-pubsub:1.105.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.104.1" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.105.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-pubsub-bom/pom.xml b/google-cloud-pubsub-bom/pom.xml index 49f3b4443..64cfa6741 100644 --- a/google-cloud-pubsub-bom/pom.xml +++ b/google-cloud-pubsub-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub-bom - 1.104.1 + 1.105.0 pom com.google.cloud @@ -64,17 +64,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 com.google.cloud google-cloud-pubsub - 1.104.1 + 1.105.0 diff --git a/google-cloud-pubsub/pom.xml b/google-cloud-pubsub/pom.xml index 468fe5361..f65484e94 100644 --- a/google-cloud-pubsub/pom.xml +++ b/google-cloud-pubsub/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-pubsub - 1.104.1 + 1.105.0 jar Google Cloud Pub/Sub https://github.com/googleapis/java-pubsub @@ -11,7 +11,7 @@ com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.105.0 google-cloud-pubsub diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java index 659d84bb6..282df369f 100644 --- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java @@ -85,7 +85,7 @@ *

{@link Publisher} will use the credentials set on the channel, which uses application default * credentials through {@link GoogleCredentials#getApplicationDefault} by default. */ -public class Publisher { +public class Publisher implements PublisherInterface { private static final Logger logger = Logger.getLogger(Publisher.class.getName()); private final String topicName; @@ -226,6 +226,7 @@ public String getTopicNameString() { * @param message the message to publish. * @return the message ID wrapped in a future. */ + @Override public ApiFuture publish(PubsubMessage message) { Preconditions.checkState(!shutdown.get(), "Cannot publish on a shut-down publisher."); diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java new file mode 100644 index 000000000..80a465053 --- /dev/null +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/PublisherInterface.java @@ -0,0 +1,53 @@ +/* + * Copyright 2020 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 com.google.cloud.pubsub.v1; + +import com.google.api.core.ApiFuture; +import com.google.pubsub.v1.PubsubMessage; + +/** + * An interface for a Cloud Pub/Sub publisher. + */ +public interface PublisherInterface { + /** + * Schedules the publishing of a message. The future will be returned with the message ID on + * success or an exception on failure. + * + *

Example of publishing a message. + * + *

{@code
+   * String message = "my_message";
+   * ByteString data = ByteString.copyFromUtf8(message);
+   * PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(data).build();
+   * ApiFuture messageIdFuture = publisher.publish(pubsubMessage);
+   * ApiFutures.addCallback(messageIdFuture, new ApiFutureCallback() {
+   *   public void onSuccess(String messageId) {
+   *     System.out.println("published with message id: " + messageId);
+   *   }
+   *
+   *   public void onFailure(Throwable t) {
+   *     System.out.println("failed to publish: " + t);
+   *   }
+   * }, MoreExecutors.directExecutor());
+   * }
+ * + * @param message the message to publish. + * @return the message ID wrapped in a future. + */ + ApiFuture publish(PubsubMessage message); +} diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java index 8baaf2472..0054408ee 100644 --- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java @@ -90,7 +90,7 @@ * href="https://github.com/google/guava/wiki/ServiceExplained">Guava documentation for more * details. */ -public class Subscriber extends AbstractApiService { +public class Subscriber extends AbstractApiService implements SubscriberInterface { private static final int THREADS_PER_CHANNEL = 5; private static final int MAX_INBOUND_MESSAGE_SIZE = 20 * 1024 * 1024; // 20MB API maximum message size. diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java new file mode 100644 index 000000000..e97e9141f --- /dev/null +++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriberInterface.java @@ -0,0 +1,26 @@ +/* + * Copyright 2020 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 com.google.cloud.pubsub.v1; + +import com.google.api.core.ApiService; + +/** + * The core interface for a Cloud Pub/Sub subscriber, consisting only of + * ApiService methods. + */ +public interface SubscriberInterface extends ApiService {} diff --git a/grpc-google-cloud-pubsub-v1/pom.xml b/grpc-google-cloud-pubsub-v1/pom.xml index d48d9a57f..792f4909c 100644 --- a/grpc-google-cloud-pubsub-v1/pom.xml +++ b/grpc-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 grpc-google-cloud-pubsub-v1 GRPC library for grpc-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.105.0 diff --git a/pom.xml b/pom.xml index f8e1fe796..ef335aa83 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-pubsub-parent pom - 1.104.1 + 1.105.0 Google Cloud Pub/Sub Parent https://github.com/googleapis/java-pubsub @@ -86,17 +86,17 @@ com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 com.google.cloud google-cloud-pubsub - 1.104.1 + 1.105.0 diff --git a/proto-google-cloud-pubsub-v1/pom.xml b/proto-google-cloud-pubsub-v1/pom.xml index ce640eee3..5ae9f7e17 100644 --- a/proto-google-cloud-pubsub-v1/pom.xml +++ b/proto-google-cloud-pubsub-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.86.1 + 1.87.0 proto-google-cloud-pubsub-v1 PROTO library for proto-google-cloud-pubsub-v1 com.google.cloud google-cloud-pubsub-parent - 1.104.1 + 1.105.0 diff --git a/versions.txt b/versions.txt index 7c7fd663b..ffd681970 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ # Format: # module:released-version:current-version -proto-google-cloud-pubsub-v1:1.86.1:1.86.1 -grpc-google-cloud-pubsub-v1:1.86.1:1.86.1 -google-cloud-pubsub:1.104.1:1.104.1 \ No newline at end of file +proto-google-cloud-pubsub-v1:1.87.0:1.87.0 +grpc-google-cloud-pubsub-v1:1.87.0:1.87.0 +google-cloud-pubsub:1.105.0:1.105.0 \ No newline at end of file