-
Notifications
You must be signed in to change notification settings - Fork 270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add artifact created event based on the outbox pattern #5274
Add artifact created event based on the outbox pattern #5274
Conversation
5d4261b
to
623ad42
Compare
623ad42
to
128e13b
Compare
dc83838
to
b2aa62c
Compare
2e0695f
to
835676a
Compare
app/src/main/java/io/apicurio/registry/storage/impl/kafkasql/KafkaSqlFactory.java
Outdated
Show resolved
Hide resolved
app/src/main/java/io/apicurio/registry/storage/impl/sql/AbstractSqlRegistryStorage.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Nice testing. I had a couple minor comments.
94a179d
to
e95d66e
Compare
afb1b36
to
1b7869e
Compare
1b7869e
to
dfe2dc9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM as-is. However, question for you:
Do we ever want to offer the option of SQL storage variant + Kafka eventing without using Debezium?
Good question. If the Kafka cluster is there anyway, what would be the reason to not use Debezium? In the end, what we're doing is very basic CDC, so I don't see any benefits other than simplifying (a bit) the deployment model. For now, I'll merge as-is, we can revisit later if we think it makes sense. |
This PR introduces support for having Registry as a source for events. In the case of the SQL storage, an outbox table has been added and a row is created for each of the following events:
Note that the event sending is done at the storage impl level on purpose, so we have access to the underlying transaction so we can benefit from the usual advantages of the outbox pattern in the SQL storage. We don't have now a way to intercept the transaction, so this was the only possible way.