{"id":30385279,"url":"https://github.com/bruce-mig/event-driven-spring-cloud-stream","last_synced_at":"2025-10-07T16:32:26.677Z","repository":{"id":303081012,"uuid":"1009091173","full_name":"bruce-mig/event-driven-spring-cloud-stream","owner":"bruce-mig","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-12T20:50:09.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-12T22:24:51.219Z","etag":null,"topics":["event-driven-architecture","functional-interfaces","kafka-binder","reactive-apis","spring-cloud-stream"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bruce-mig.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-26T15:02:28.000Z","updated_at":"2025-07-12T20:48:21.000Z","dependencies_parsed_at":"2025-07-05T15:56:39.492Z","dependency_job_id":"c3898fd7-20bd-469d-815c-9886a04a868a","html_url":"https://github.com/bruce-mig/event-driven-spring-cloud-stream","commit_stats":null,"previous_names":["bruce-mig/event-driven-spring-cloud-stream"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bruce-mig/event-driven-spring-cloud-stream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bruce-mig%2Fevent-driven-spring-cloud-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bruce-mig%2Fevent-driven-spring-cloud-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bruce-mig%2Fevent-driven-spring-cloud-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bruce-mig%2Fevent-driven-spring-cloud-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bruce-mig","download_url":"https://codeload.github.com/bruce-mig/event-driven-spring-cloud-stream/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bruce-mig%2Fevent-driven-spring-cloud-stream/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271415496,"owners_count":24755639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["event-driven-architecture","functional-interfaces","kafka-binder","reactive-apis","spring-cloud-stream"],"created_at":"2025-08-21T02:11:52.543Z","updated_at":"2025-10-07T16:32:21.647Z","avatar_url":"https://github.com/bruce-mig.png","language":"Java","readme":"# event-driven-spring-cloud-stream\n\n- Domain Driven Design (DDD)\n- Test Driven Design (TDD)\n- Event Driven with Spring Cloud Stream\n- Apache Kafka Binder\n- Functional Interfaces\n- Retries \u0026 DLQs\n- Message Router Function Routing\n- Test Containers\n- Spring Cloud Contract\n- Transaction Outbox Pattern\n- Kafka Connect\n- Debezium\n- Idempotency\n- Change Data Capture (CDC)\n\n---\n\n# Debezium\n\n Check if Debezium is running at `http://localhost:8083/`\n\n Check installed Debezium connectors at `http://localhost:8083/connectors`\n\n Check available Debezium connector plugins at `http://localhost:8083/connector-plugins`\n \n### Configure MySQL connector \n\n`https://debezium.io/documentation/reference/3.2/connectors/mysql.html`\n\nhttps://debezium.io/documentation/reference/3.2/connectors/mysql.html#mysql-creating-user\n\n```bash\ndocker exec -it mysql bin/bash\n\nmysql -u root -p\n```\n\n\n### Creating a user\nA Debezium MySQL connector requires a MySQL user account. This MySQL user must have appropriate permissions on all databases for which the Debezium MySQL connector captures changes.\n\n### Prerequisites\n- A MySQL server.\n- Basic knowledge of SQL commands.\n\n### Procedure\n\n1. Create the MySQL user:\n\n    `mysql\u003e CREATE USER 'user'@'%' IDENTIFIED BY 'password';`\n\n2. Grant the required permissions to the user:\n\n    `mysql\u003e GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';`\n\n3. Finalize the user’s permissions:\n\n    `mysql\u003e FLUSH PRIVILEGES;`\n\n---\n\n## Registering a connector to monitor a database\n\nhttps://debezium.io/documentation/reference/3.2/tutorial.html#registering-connector-monitor-inventory-database\n\nSend a POST request to `localhost:8083/connectors` with the following body:\n\n```json\n{\n   \"name\": \"outbox-connector\",\n   \"config\": {\n      \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\",\n      \"tasks.max\": \"1\",\n      \"database.hostname\": \"mysql\",\n      \"database.port\": \"3306\",\n      \"database.user\": \"root\",\n      \"database.password\": \"password\",\n      \"database.server.id\": \"1\",\n      \"topic.prefix\": \"kafka.connect\",\n      \"database.include.list\": \"customer\",\n      \"table.include.list\": \"customer.outbox_message\",\n      \"schema.history.internal.kafka.bootstrap.servers\": \"broker:29092\",\n      \"schema.history.internal.kafka.topic\": \"schema-history.customer\",\n      \"transforms\": \"dropTopicPrefix,wrap\",\n      \"transforms.dropTopicPrefix.type\": \"org.apache.kafka.connect.transforms.RegexRouter\",\n      \"transforms.wrap.type\": \"io.debezium.transforms.ExtractNewRecordState\",\n      \"transforms.dropTopicPrefix.regex\": \"kafka.connect.customer.(.*)\",\n      \"transforms.dropTopicPrefix.replacement\": \"$1\",\n      \"key.converter\": \"org.apache.kafka.connect.json.JsonConverter\",\n      \"key.converter.schemas.enable\": false,\n      \"value.converter\": \"org.apache.kafka.connect.json.JsonConverter\",\n      \"value.converter.schemas.enable\": false,\n      \"key.converter.schema.registry.url\": \"http://schema-registry:8081\",\n      \"value.converter.schema.registry.url\": \"http://schema-registry:8081\"\n\n   }\n}\n```\n\n\nDelete connector `localhost:8083/connectors/outbox-connector`","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbruce-mig%2Fevent-driven-spring-cloud-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbruce-mig%2Fevent-driven-spring-cloud-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbruce-mig%2Fevent-driven-spring-cloud-stream/lists"}