{"action":"created","issue":{"url":"https://api.github.com/repos/dasch/avro_turf/issues/20","labels_url":"https://api.github.com/repos/dasch/avro_turf/issues/20/labels{/name}","comments_url":"https://api.github.com/repos/dasch/avro_turf/issues/20/comments","events_url":"https://api.github.com/repos/dasch/avro_turf/issues/20/events","html_url":"https://github.com/dasch/avro_turf/pull/20","id":109279894,"number":20,"title":"Efficiently encode messages using a schema registry","user":{"login":"dasch","id":6351,"avatar_url":"https://avatars.githubusercontent.com/u/6351?v=3","gravatar_id":"","url":"https://api.github.com/users/dasch","html_url":"https://github.com/dasch","followers_url":"https://api.github.com/users/dasch/followers","following_url":"https://api.github.com/users/dasch/following{/other_user}","gists_url":"https://api.github.com/users/dasch/gists{/gist_id}","starred_url":"https://api.github.com/users/dasch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dasch/subscriptions","organizations_url":"https://api.github.com/users/dasch/orgs","repos_url":"https://api.github.com/users/dasch/repos","events_url":"https://api.github.com/users/dasch/events{/privacy}","received_events_url":"https://api.github.com/users/dasch/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-10-01T11:18:36Z","updated_at":"2015-10-01T12:57:54Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dasch/avro_turf/pulls/20","html_url":"https://github.com/dasch/avro_turf/pull/20","diff_url":"https://github.com/dasch/avro_turf/pull/20.diff","patch_url":"https://github.com/dasch/avro_turf/pull/20.patch"},"body":"Adds a new top-level AvroTurf API called _Messaging_. This API uses the [Confluent Schema Registry](http://docs.confluent.io/1.0/schema-registry/docs/index.html) to register the schemas used for writing messages. When registering a schema, a unique schema id is returned from the registry, which is then encoded alongside the actual message data. When decoding a message, the schema id is first extracted, the schema is fetched from the registry and then used to decode the remaining part of the message.\r\n\r\n###### Usage\r\n\r\n```ruby\r\navro = AvroTurf::Messaging.new(registry_url: ..., schemas_path: ...)\r\n\r\ndata = avro.encode({ \"age\" => 32 }, schema_name: \"info\")\r\navro.decode(data) #=> { \"age\" => 32 }\r\n```\r\n\r\n###### Tasks\r\n\r\n- [x] Registering schemas\r\n- [x] Fetching schemas by id\r\n- [x] Documentation\r\n- [x] Allow specifying a reader's schema\r\n- [x] Caching schema registrations\r\n- [x] Caching schema fetches\r\n- [x] Logging"},"comment":{"url":"https://api.github.com/repos/dasch/avro_turf/issues/comments/144719476","html_url":"https://github.com/dasch/avro_turf/pull/20#issuecomment-144719476","issue_url":"https://api.github.com/repos/dasch/avro_turf/issues/20","id":144719476,"user":{"login":"dasch","id":6351,"avatar_url":"https://avatars.githubusercontent.com/u/6351?v=3","gravatar_id":"","url":"https://api.github.com/users/dasch","html_url":"https://github.com/dasch","followers_url":"https://api.github.com/users/dasch/followers","following_url":"https://api.github.com/users/dasch/following{/other_user}","gists_url":"https://api.github.com/users/dasch/gists{/gist_id}","starred_url":"https://api.github.com/users/dasch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dasch/subscriptions","organizations_url":"https://api.github.com/users/dasch/orgs","repos_url":"https://api.github.com/users/dasch/repos","events_url":"https://api.github.com/users/dasch/events{/privacy}","received_events_url":"https://api.github.com/users/dasch/received_events","type":"User","site_admin":false},"created_at":"2015-10-01T12:57:54Z","updated_at":"2015-10-01T12:57:54Z","body":"@yadavsaroj this implements a client library for Schema Registry in Ruby. Can you give it a review?"}}