{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/1223","repository_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/1223/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/1223/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/1223/events","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1223","id":174662923,"number":1223,"title":"Pubsub: Provide callback capabilities to publishAsync","user":{"login":"viniciusccarvalho","id":803893,"avatar_url":"https://avatars.githubusercontent.com/u/803893?v=3","gravatar_id":"","url":"https://api.github.com/users/viniciusccarvalho","html_url":"https://github.com/viniciusccarvalho","followers_url":"https://api.github.com/users/viniciusccarvalho/followers","following_url":"https://api.github.com/users/viniciusccarvalho/following{/other_user}","gists_url":"https://api.github.com/users/viniciusccarvalho/gists{/gist_id}","starred_url":"https://api.github.com/users/viniciusccarvalho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viniciusccarvalho/subscriptions","organizations_url":"https://api.github.com/users/viniciusccarvalho/orgs","repos_url":"https://api.github.com/users/viniciusccarvalho/repos","events_url":"https://api.github.com/users/viniciusccarvalho/events{/privacy}","received_events_url":"https://api.github.com/users/viniciusccarvalho/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/labels/pubsub","name":"pubsub","color":"fef2c0"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-02T01:39:26Z","updated_at":"2016-09-02T13:10:27Z","closed_at":null,"body":"It would be nice if publishAsync could offer something like Guava's ListenableFuture, so we could add non blocking callbacks to the results of the operation."},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/comments/244370444","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1223#issuecomment-244370444","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/1223","id":244370444,"user":{"login":"viniciusccarvalho","id":803893,"avatar_url":"https://avatars.githubusercontent.com/u/803893?v=3","gravatar_id":"","url":"https://api.github.com/users/viniciusccarvalho","html_url":"https://github.com/viniciusccarvalho","followers_url":"https://api.github.com/users/viniciusccarvalho/followers","following_url":"https://api.github.com/users/viniciusccarvalho/following{/other_user}","gists_url":"https://api.github.com/users/viniciusccarvalho/gists{/gist_id}","starred_url":"https://api.github.com/users/viniciusccarvalho/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viniciusccarvalho/subscriptions","organizations_url":"https://api.github.com/users/viniciusccarvalho/orgs","repos_url":"https://api.github.com/users/viniciusccarvalho/repos","events_url":"https://api.github.com/users/viniciusccarvalho/events{/privacy}","received_events_url":"https://api.github.com/users/viniciusccarvalho/received_events","type":"User","site_admin":false},"created_at":"2016-09-02T13:10:27Z","updated_at":"2016-09-02T13:10:27Z","body":"Got it, I was hoping for `CompletableFuture` but I thought it was asking too much :)\r\n\r\nMainly to be able to return immediately and attach a listener in case of errors for example. One thing we are struggling is with the overall throughput of pubsub. We thought on using the spotify client, but since gRPC is becoming active we gave it a try.\r\n\r\nInitial tests are showing gRPC a bit slower than the traditional REST client, which is a bit weird, we may not be setting the right knobs. But as a general rule, sending single messages it usually takes ~50ms per 128byte message with REST but its taking ~70ms with gRPC. Those numbers drop by half usually when running from GCE, but it's still a lot compared to other systems such as kafka or even rabbitMQ.\r\n\r\nBatching makes wonders, we are able to easily reach peaks of 18k messages/sec per thread when batching them, but it adds some overhead on our end to process the batch and we loose any acks received if clients want to get a guarantee. It's a tradeoff we understand, but we are trying to find better ways to scale out the throughput of a single client.\r\n\r\nRegards"}}
{"actor":{"display_login":"viniciusccarvalho"}}