{"_id":"@parkhub/circe","_rev":"55-e635800be1a75edcafe3666c4567a278","name":"@parkhub/circe","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@parkhub/circe","version":"0.1.0","_id":"@parkhub/circe@0.1.0","maintainers":[{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"}],"dist":{"shasum":"5acddfb2b66819c4878af06b2b4a92636a247c45","tarball":"https://registry.npmjs.org/@parkhub/circe/-/circe-0.1.0.tgz","integrity":"sha512-oXlVYtdOxyGUVvVRe7ujyHI0Mi4MNs+K8VW7GG+d1Y91ebht7nPBCbAaOC39+jMtUsWJF5fvvfUqhxt39+67lg==","signatures":[{"sig":"MEUCIQD4QEdZns3v7N/ZWCK1VkjyBkkNlupNewdQyTBvcFHokwIgTcahufQvDI7qkvE6LvlUIYOcqxXlImKTw+HlvpnlCVE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"jest":{"verbose":true,"testMatch":["**/__tests__/**/*.test.js?(x)"],"collectCoverage":true,"collectCoverageFrom":["src/**/*.js"],"modulePathIgnorePatterns":["dist/*"],"coveragePathIgnorePatterns":["/node_modules/","/dist/"]},"main":"index.js","config":{"commitizen":{"path":"cz-conventional-changelog"}},"scripts":{"docs":"esdoc","lint":"eslint src","test":"jest","build":"babel src --out-dir dist --copy-files && cp ./package.json ./README.md dist","clean":"rm -rf dist coverage","start":"node index.js","todos":"leasot --reporter markdown ./src/** > TODOS.md","commit":"git-cz","release":"yarn test && yarn run clean && yarn run lint && yarn run build","start-dev":"NODE_ENV=development nodemon --exec babel-node ./src/index.js","test:watch":"jest --watchAll"},"_npmUser":{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"},"_npmVersion":"5.0.3","description":"> Ridiculously crazy easy event store API that leverages GRPC to guarantee consistent messages.","directories":{},"_nodeVersion":"8.1.2","devDependencies":{"jest":"^20.0.4","eslint":"^3.19.0","babel-cli":"^6.24.1","babel-jest":"^20.0.3","commitizen":"^2.9.6","babel-eslint":"^7.2.3","babel-loader":"^7.1.0","eslint-loader":"^1.8.0","eslint-plugin-jest":"^20.0.3","eslint-plugin-babel":"^4.1.1","prettier-eslint-cli":"^4.1.1","eslint-plugin-import":"^2.5.0","eslint-config-airbnb-base":"^11.2.0","babel-plugin-transform-strict-mode":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-es2015-modules-commonjs":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/circe-0.1.0.tgz_1498192351498_0.20241352426819503","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@parkhub/circe","version":"0.2.0","_id":"@parkhub/circe@0.2.0","maintainers":[{"name":"bfletcherbiggs","email":"bfletcherbiggs@gmail.com"},{"name":"ggellene","email":"greg.gellene@gmail.com"},{"name":"jonsenterfitt","email":"jon.senterfitt@parkhub.com"},{"name":"loganbfisher","email":"logan@themediaside.com"},{"name":"realtschoegl","email":"matt.tschoegl@parkhub.com"},{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"},{"name":"thetwosents","email":"jon@belfortagency.com"}],"dist":{"shasum":"91c5308c769520e7bc9f8cb4cf9736b99ce12224","tarball":"https://registry.npmjs.org/@parkhub/circe/-/circe-0.2.0.tgz","integrity":"sha512-cbRMK2o0MDfw532CE3NUiFAyiufz4vNCVTuEkNu8riVYuCV2GkYPvcq8wC4RI94Ta5F1u7o0Sr4chQJ5Bt+XfA==","signatures":[{"sig":"MEUCIQCGdJTL7iqXt2F0mjyPUIMrPJcj1gIDN/un9FuLGQa74wIgbR/7iCGN8cs73mz9qEdiCuKhUbQEHrRUj2IYGMPjuZM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"jest":{"verbose":true,"testMatch":["**/__tests__/**/*.test.js?(x)"],"collectCoverage":true,"collectCoverageFrom":["src/**/*.js"],"modulePathIgnorePatterns":["dist/*"],"coveragePathIgnorePatterns":["/node_modules/","/dist/"]},"main":"index.js","config":{"commitizen":{"path":"cz-conventional-changelog"}},"scripts":{"docs":"esdoc","lint":"eslint src","test":"jest","build":"babel src --out-dir dist --copy-files && cp ./package.json ./README.md dist","clean":"rm -rf dist coverage","start":"node index.js","todos":"leasot --reporter markdown ./src/** > TODOS.md","commit":"git-cz","release":"yarn test && yarn run clean && yarn run lint && yarn run build","start-dev":"NODE_ENV=development nodemon --exec babel-node ./src/index.js","test:watch":"jest --watchAll"},"_npmUser":{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"},"_npmVersion":"5.0.3","description":"> Ridiculously crazy easy event store API that leverages GRPC to guarantee consistent messages.","directories":{},"_nodeVersion":"8.1.2","devDependencies":{"jest":"^20.0.4","eslint":"^3.19.0","babel-cli":"^6.24.1","babel-jest":"^20.0.3","commitizen":"^2.9.6","babel-eslint":"^7.2.3","babel-loader":"^7.1.0","eslint-loader":"^1.8.0","eslint-plugin-jest":"^20.0.3","eslint-plugin-babel":"^4.1.1","prettier-eslint-cli":"^4.1.1","eslint-plugin-import":"^2.5.0","eslint-config-airbnb-base":"^11.2.0","babel-plugin-transform-strict-mode":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-es2015-modules-commonjs":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/circe-0.2.0.tgz_1498195258643_0.07894273544661701","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@parkhub/circe","version":"0.2.1","_id":"@parkhub/circe@0.2.1","maintainers":[{"name":"bfletcherbiggs","email":"bfletcherbiggs@gmail.com"},{"name":"ggellene","email":"greg.gellene@gmail.com"},{"name":"jonsenterfitt","email":"jon.senterfitt@parkhub.com"},{"name":"loganbfisher","email":"logan@themediaside.com"},{"name":"realtschoegl","email":"matt.tschoegl@parkhub.com"},{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"},{"name":"thetwosents","email":"jon@belfortagency.com"}],"dist":{"shasum":"18e3708846ab63e3263d04c04891160d5c806c34","tarball":"https://registry.npmjs.org/@parkhub/circe/-/circe-0.2.1.tgz","integrity":"sha512-gNHZ+Z7mBxif3V9XO1gaszX+Z4NImmz+WcmC5K/9AR++z9iN1ATEDzcuKWOO7KiyXgkcdHDPetJHoaV4qa2ivA==","signatures":[{"sig":"MEUCIQDIj5fzwdwJR4nVczeIdh+fo9KJdrNmkdWY5j2p+BFI5AIgDjZ+rGmP8hyYFF4Lx496L17fFGcSJS1YgjUav3wBHzU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"jest":{"verbose":true,"testMatch":["**/__tests__/**/*.test.js?(x)"],"collectCoverage":true,"collectCoverageFrom":["src/**/*.js"],"modulePathIgnorePatterns":["dist/*"],"coveragePathIgnorePatterns":["/node_modules/","/dist/"]},"main":"index.js","config":{"commitizen":{"path":"cz-conventional-changelog"}},"scripts":{"docs":"esdoc","lint":"eslint src","test":"jest","build":"babel src --out-dir dist --copy-files && cp ./package.json ./README.md dist","clean":"rm -rf dist coverage","start":"node index.js","todos":"leasot --reporter markdown ./src/** > TODOS.md","commit":"git-cz","release":"yarn test && yarn run clean && yarn run lint && yarn run build","start-dev":"NODE_ENV=development nodemon --exec babel-node ./src/index.js","test:watch":"jest --watchAll"},"_npmUser":{"name":"sirmyztiq","email":"daniel.olivares@parkhub.com"},"_npmVersion":"5.0.3","description":"> Ridiculously crazy easy event store API that leverages GRPC to guarantee consistent messages.","directories":{},"_nodeVersion":"8.1.2","devDependencies":{"jest":"^20.0.4","eslint":"^3.19.0","babel-cli":"^6.24.1","babel-jest":"^20.0.3","commitizen":"^2.9.6","babel-eslint":"^7.2.3","babel-loader":"^7.1.0","eslint-loader":"^1.8.0","eslint-plugin-jest":"^20.0.3","eslint-plugin-babel":"^4.1.1","prettier-eslint-cli":"^4.1.1","eslint-plugin-import":"^2.5.0","eslint-config-airbnb-base":"^11.2.0","babel-plugin-transform-strict-mode":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-plugin-transform-es2015-modules-commonjs":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/circe-0.2.1.tgz_1498195544534_0.8980410536751151","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@parkhub/circe","version":"1.0.0","author":{"name":"Daniel Olivares"},"_id":"@parkhub/circe@1.0.0","maintainers":[{"name":"bfletcherbiggs","email":"bfletcherbiggs@gmail.com"},{"name":"ggellene","email":"greg.gellene@gmail.com"},{"name":"sirmyztiq","email":"fuzzoli87@gmail.com"},{"name":"jonsenterfitt","email":"jon.senterfitt@parkhub.com"},{"name":"thetwosents","email":"jon@belfortagency.com"},{"name":"loganbfisher","email":"logan@themediaside.com"},{"name":"realtschoegl","email":"matt.tschoegl@parkhub.com"}],"homepage":"https://github.com/parkhub/circe#readme","bugs":{"url":"https://github.com/parkhub/circe/issues"},"dist":{"shasum":"e811199bd09fafe0ab97ed5fd9852a91e17fea32","tarball":"https://registry.npmjs.org/@parkhub/circe/-/circe-1.0.0.tgz","integrity":"sha512-QCAU7RbnX2rAIwXDaA6VBkkIj1YEhYeOgwq6gdJMYtoP+CF3xd38pFayykdBm9E6ANwHIjcR9A2rdFTI5FnwUQ==","signatures":[{"sig":"MEQCIF0TZC1UzTKnDJsoVwTDmD07oY2WuQyT8uMrktLa7Q8RAiB35eUaRums83wDhi6y4czuwijGtvcaBWZ6aUdg5ifSHQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"jest":{"verbose":true,"testMatch":["**/src/**/?(*.)test.js?(x)"],"collectCoverage":true,"testEnvironment":"node","coverageThreshold":{"global":{"lines":100,"branches":100,"functions":100,"statements":100}},"modulePathIgnorePatterns":["dist/*"],"coveragePathIgnorePatterns":["/node_modules/","/dist/"]},"main":"dist/index.js","files":["dist"],"config":{"commitizen":{"path":"cz-conventional-changelog"}},"engines":{"npm":">=3","node":">=8.0.0"},"gitHead":"b1111fc7f1440d50fc680d310ab0301c932715e3","release":{"debug":false,"verifyConditions":"condition-codefresh"},"scripts":{"start":"nps","commitmsg":"opt --in commit-msg --exec \"validate-commit-msg\"","precommit":"opt --in pre-commit --exec \"npm start validate\""},"_npmUser":{"name":"sirmyztiq","email":"fuzzoli87@gmail.com"},"repository":{"url":"git+https://github.com/parkhub/circe.git","type":"git"},"_npmVersion":"5.3.0","description":"A middleware that validates Kafka topic's messages for Circe.","directories":{},"_nodeVersion":"8.5.0","dependencies":{"is-json":"^2.0.1","p-event":"^1.3.0","node-rdkafka":"^2.0.0","@parkhub/circe-middleware":"^1.1.0"},"publishConfig":{"access":"public"},"devDependencies":{"nps":"^5.7.1","jest":"^21.1.0","delay":"^2.0.0","husky":"^0.14.3","eslint":"^4.7.1","leasot":"^4.10.1","rimraf":"^2.6.2","codecov":"^2.3.0","opt-cli":"^1.5.2","flow-bin":"^0.54.1","babel-cli":"^6.26.0","nps-utils":"^1.3.0","babel-jest":"^21.0.2","commitizen":"^2.9.6","flow-typed":"^2.1.5","babel-eslint":"^8.0.0","documentation":"^5.3.2","are-we-flow-yet":"^1.0.0","babel-preset-env":"^1.6.0","flow-copy-source":"^1.2.1","semantic-release":"^8.0.0","babel-preset-flow":"^6.23.0","flow-remove-types":"^1.2.1","eslint-plugin-jest":"^21.1.0","condition-codefresh":"^1.0.1","eslint-plugin-babel":"^4.1.2","prettier-eslint-cli":"4.3.2","validate-commit-msg":"^2.14.0","eslint-plugin-import":"^2.7.0","eslint-plugin-flowtype":"^2.35.1","cz-conventional-changelog":"^2.0.0","babel-plugin-transform-strict-mode":"^6.24.1","@parkhub/eslint-config-parkhub-base":"^1.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/circe-1.0.0.tgz_1505854696217_0.37405270081944764","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-06-23T04:32:32.830Z","modified":"2026-09-21T18:05:23.795Z","0.1.0":"2017-06-23T04:32:32.830Z","0.2.0":"2017-06-23T05:20:59.621Z","0.2.1":"2017-06-23T05:25:46.055Z","1.0.0":"2017-09-19T20:58:17.214Z"},"bugs":{"url":"https://github.com/parkhub/circe/issues"},"author":{"name":"Daniel Olivares"},"homepage":"https://github.com/parkhub/circe#readme","repository":{"url":"git+https://github.com/parkhub/circe.git","type":"git"},"description":"A middleware that validates Kafka topic's messages for Circe.","maintainers":[{"email":"daytonpe14@gmail.com","name":"daytonpe"},{"email":"matt.tschoegl@parkhub.com","name":"realtschoegl"},{"email":"alexander.cauble@gmail.com","name":"accloudcoder"},{"email":"jbrooks02@gmail.com","name":"novym"},{"email":"jebenavidez@outlook.com","name":"justin-ben"},{"email":"thiel.talicuran@parkhub.com","name":"thielt"},{"email":"stephen.emerson@parkhub.com","name":"stephemer"},{"email":"nathaniel.brown@parkhub.com","name":"nathaniel.brown"},{"email":"austin.lewis@justpark.com","name":"austin.lewis.justpark"},{"email":"landon.parris@justpark.com","name":"landon.parris"},{"email":"zoe.chamlee@parkhub.com","name":"zchamlee"},{"email":"joni@bek.io","name":"honi"},{"email":"colinc86@gmail.com","name":"electrocampbell"},{"email":"josh.boyle@justpark.com","name":"joshaboyle"},{"email":"loumonth.jack@justpark.com","name":"loumonth.jack"},{"email":"david.yang@justpark.com","name":"davidyang.justpark"},{"email":"dylan.delarosa@justpark.com","name":"delarosadyljp"},{"email":"rj.ellazar@justpark.com","name":"rjellazar"},{"email":"jack.anthony.wall@gmail.com","name":"j4k"},{"email":"hannah.ismail@parkhub.com","name":"hannahi771"},{"email":"jason@jasonlusk.com","name":"mpalpha"},{"email":"shane.frykholm@justpark.com","name":"mrshanef"}],"readme":"# Circe\n\nA middleware that validates Kafka topic's messages for Circe.\n\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n[![Dependencies][dependencyci-badge]][dependencyci]\n[![version][version-badge]][package]\n[![Apache License][license-badge]][LICENSE]\n[![PRs Welcome][prs-badge]][prs]\n[![Roadmap][roadmap-badge]][roadmap]\n[![Semantic Release][semantic-release-badge]][sem-release-badge]\n[![Commitizen][commitizen-friendly-badge]][comm-friendly-badge]\n\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n[![Tweet][twitter-badge]][twitter]\n\n## Install\n```bash\nnpm install @parkhub/circe\n```\n\n## Usage\nIt wraps [node-rdkafka] with some friendly features like [middleware execution], parsing of messages received and to protect from any future breaking changes.\n\nSome of the options are high-level. So make sure to brush up on your [Kafka knowledge] before trying out any of those features!\n\n## Consumer API\ncreateConsumer({ connection, groupId, topicCfgs, globalCfgs })\n\n - connection(String, REQUIRED) The connection string to find the kafka\n   service\n - groupId(String, REQUIRED) The [Consumer Group] this application\n   belongs to.\n - topicCfgs(Object, optional) [Topic configurations] to be applied to\n   any topics subscribed via this consumer.\n - globalCfgs(Object, optional) [Global configurations] to be applied to\n   this consumer.\n\t - DEFAULTS: { event_cb: true }\n\n```javascript\nimport circe from '@parkhub/circe';\n\n// Using async/await\n(async function startConsumer() {\n  const consumer = await circe.createConsumer({\n    connection: 'kafka:9092',\n    groupId: 'MY_GROUP_ID'\n  });\n\n  consumer.subscribe({ topic: 'MY_TOPIC' });\n\n  const handler = message => console.log(message);\n  consumer.consume({ handler });\n\n  await consumer.disconnect();\n\n  console.log('DONE!');\n})();\n\n// Using Promises\ncirce.createConsumer({ connection: 'kafka:9092', groupId: 'MY_GROUP_ID'})\n  .then(consumer => {\n    consumer.subscribe({ topic: 'MY_TOPIC' });\n\n    const handler = message => console.log(message);\n    consumer.consume({ handler });\n\n    return consumer.disconnect();\n  })\n  .then(() => console.log('DONE!'))\n  .catch(err => console.log('ERROR!', err));\n```\n\n### Consumer Client API\n**subscribe({ topic })** - Will subscribe this consumer to a topic BUT WILL NOT begin consuming them. You cannot subscribe to multiple topics by calling this method more than once. You must call .unsubscribe() first.\n\n - **topic(String[]|String, REQUIRED)** - The topic(s) this consumer should\n   subscribe to.\n```javascript\nconsumer.subscribe({ topic: 'MY_TEST_TOPIC' });\n// OR\nconsumer.subscribe({ topic: ['MY_TEST_TOPIC', 'MY_OTHER_TOPIC'] });\n```\n\n**consume({ handler, middleware })** - Will begin consuming the subscribed topics using the handler and middleware(if configured)\n\n - **handler(Function, REQUIRED)** - A function that accepts a message object that matches the [rdkafka structure] EXCEPT the \"value\" property which will instead be a \"message\" property with the Buffer from the value property already parsed. If it's a JSON string value, you will receive a JS object.\n - **middleware(Function[], optional)** - Functions that match the format of a valid [circe middleware] functions. Check out the repo for predefined middleware or create your own! (***NOTE***: The order of the middleware matters and the arity of the middleware much match the one after it) These middleware will get the MESSAGE consumed.\n\t - Pre-middleware - these get applied BEFORE any of your middleware\n\t\t - buffer to message - Transforms the value property into a message property and parses it\n```javascript\nconst handler = (message) => console.log(message);\nconst middleware = [(message, next) => {\n  console.log('inside middleware', message);\n  next(message);\n}];\n\nconsumer.consume({ handler, middleware });\n```\n\n**disconnect()** - RETURNS a PROMISE. The promise will fulfill once the client is fully disconnected.\n```javascript\nconsumer.disconnect()\n  .then(() => console.log('DISCONNECTED'))\n  .catch((err) => console.log('Error disconnecting', err));\n```\n\n**unsubscribe()** - Unsubscribes from a topic(s) (***NOTE***: This only unsubscribes from the topics BUT if you were to subscribe to some other topics, IT WILL USE THE SAME HANDLER ALREADY DEFINED. This feels like a short-coming of the base library and there is [an issue] pending response. If you need to redefine a new consumer with new topics and a new handler, it's best to disconnect and create a new one consumer client.)\n\n```javascript\nconsumer.subscribe({ topic: 'TOPIC' });\nconsumer.consume({ handler: ({ topic }) => console.log(topic) }); // Any messages to the topic are now being handled.\n\nconsumer.unsubscribe();\nconsumer.subscribe({ topic: 'ANOTHER_TOPIC' }); // Now the handler defined is going to only trigger for this topic!\n```\n\n**addListener(...args)** - Add a listener to this consumer. You can use any of the events available for the consumer listed in [node-rdkafka] documentation. (***NOTE***: Some of these events require a configuration setting to be set when creating your client)\n\n```javascript\nconsumer.addListener('event.log', result => console.log(result));\n```\n\n## Producer API\n```javascript\nimport circe from '@parkhub/circe';\n\n// Using async/await\n(async function startProducer() {\n  const producer = await circe.createProducer({\n    connection: 'kafka:9092'\n  });\n\n  producer.publish({\n    publishCfgs: {\n      topic: 'EXAMPLE_TOPIC',\n      message: {\n        test: 'message'\n      }\n    }\n  });\n\n  await producer.disconnect();\n\n  console.log('DONE!');\n}());\n\n// Using Promises\ncirce\n  .createProducer({ connection: 'kafka:9092' })\n  .then((producer) => {\n    producer.publish({\n      publishCfgs: {\n        topic: 'EXAMPLE_TOPIC',\n        message: {\n          test: 'message'\n        }\n      }\n    });\n\n    return producer.disconnect();\n  })\n  .then(() => console.log('DONE!'))\n  .catch(err => console.log('ERROR!', err));\n```\n\n**publish({ publishCfgs, middleware })** - Publish a message to a new topic\n\n - **publishCfgs(Object, REQUIRED)** - Configurations used to publish your message\n\t - **topic(String, REQUIRED)** - Topic to publish this message to\n\t - **message(String|Object, REQUIRED)** - Message to publish\n\t - **partition(number, optional)** - A specific partition for the message. \n\t - **key(String, optional)** - Specify a key for this message\n\t - **timestamp(number, optional)** - Timestamp(EPOCH in milliseconds, ie Date.now()) to set for this message\n\t - **opaqueToken(token, optional)** - An opaque token that gets passed along your delivery reports.\n - **middleware(Function[], optional)** - Functions that match the format of a valid [circe middleware] function. Check out the repo for predefined middleware or create your own! (***NOTE***: The order of the middleware matters and the arity of the middleware much match the one after it) These will receive the publishCfgs.\n\t - Post-middleware - These get applied AFTER any defined middleware you use\n\t\t - Message to Buffer - Transforms your message into a buffer\n\t\t - timestamp - attaches a timestamp(if none is already defined)\n\n```javascript\nproducer.publish({\n  publishCfgs: {\n    topic: 'TEST_TOPIC',\n    message: {\n      test: 'message'\n    },\n    timestamp: Date.now()\n  },\n  middleware: [(publishCfgs, next) => {\n    console.log('publish configurations', publishCfgs);\n    next(publishCfgs);\n }];\n```\n\n**disconnect()** - RETURNS a PROMISE. The promise will fulfill once the client is fully disconnected.\n```javascript\nproducer.disconnect()\n  .then(() => console.log('DISCONNECTED'))\n  .catch((err) => console.log('Error disconnecting', err));\n```\n\n**addListener(...args)** - Add a listener to this producer. You can use any of the events available for the producer listed in [node-rdkafka] documentation. (***NOTE***: Some of these events require a configuration setting to be set when creating your client)\n\n```javascript\nproducer.addListener('event.log', result => console.log(result));\n```\n\n\n[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\n[sem-release-badge]: https://github.com/semantic-release/semantic-release\n[build-badge]:  https://g.codefresh.io/api/badges/build?repoOwner=parkhub&repoName=circe&branch=master&pipelineName=circe&accountName=loganbfisher&type=cf-1\n[build]:  https://g.codefresh.io/repositories/parkhub/circe/builds?filter=trigger:build;branch:master;service:59c154fcde30d50001b68a79~circe\n[coverage-badge]: https://img.shields.io/codecov/c/github/parkhub/circe.svg?style=flat-square\n[coverage]: https://codecov.io/gh/parkhub/circe\n[dependencyci-badge]: https://dependencyci.com/github/parkhub/circe/badge?style=flat-square\n[dependencyci]: https://dependencyci.com/github/parkhub/circe\n[version-badge]: https://img.shields.io/npm/v/@parkhub/circe.svg?style=flat-square\n[package]: https://www.npmjs.com/package/@parkhub/circe\n[license-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n[license]: https://github.com/parkhub/circe/blob/master/LICENSE\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[roadmap-badge]: https://img.shields.io/badge/%F0%9F%93%94-roadmap-CD9523.svg?style=flat-square\n[roadmap]: https://github.com/parkhub/circe/blob/master/ROADMAP.md\n[github-watch-badge]: https://img.shields.io/github/watchers/parkhub/circe.svg?style=social\n[github-watch]: https://github.com/parkhub/circe/watchers\n[github-star-badge]: https://img.shields.io/github/stars/parkhub/circe.svg?style=social\n[github-star]: https://github.com/parkhub/circe/stargazers\n[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20prettier-eslint-cli!%20https://github.com/parkhub/circe%20%F0%9F%91%8D\n[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/parkhub/circe.svg?style=social\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[commitizen-friendly-badge]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\n[comm-friendly-badge]: http://commitizen.github.io/cz-cli/\n[node-rdkafka]: https://github.com/Blizzard/node-rdkafka\n[middleware execution]: https://github.com/parkhub/circe-middleware\n[Consumer group]: https://kafka.apache.org/documentation/#gettingStarted\n[Topic configurations]: https://github.com/edenhill/librdkafka/blob/0.9.5.x/CONFIGURATION.md#topic-configuration-properties\n[Global configurations]: https://github.com/edenhill/librdkafka/blob/0.9.5.x/CONFIGURATION.md#global-configuration-properties\n[rdkafka structure]: https://github.com/Blizzard/node-rdkafka#message-structure\n[circe middleware]: https://github.com/parkhub/circe-middleware\n[an issue]: https://github.com/Blizzard/node-rdkafka/issues/251\n[Kafka knowledge]: https://kafka.apache.org/documentation/\n\n\n","readmeFilename":"README.md"}