-
-
Notifications
You must be signed in to change notification settings - Fork 60
fix: implement Exception Handling in Kafka Publisher #430
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
base: master
Are you sure you want to change the base?
Conversation
…eption handling mechanisms during Kafka message publishing.
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.
Welcome to AsyncAPI. Thanks a lot for creating your first pull request. Please check out our contributors guide useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.
@Tenischev @derberg @asyncapi-bot-eve Can you please review these changes |
@asyncapi-bot @asyncapi-bot-eve Can you check this PR out |
Hi @sancheet230 |
@Tenischev Replaced deprecated |
@Tenischev I have done the changes PTAL |
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.
When you finish with update of the PublisherService, please run and update tests
{% if channel.description() or channel.subscribe().description() %}/**{% for line in channel.description() | splitByLines %} | ||
* {{line | safe}}{% endfor %}{% for line in channel.subscribe().description() | splitByLines %} | ||
* {{line | safe}}{% endfor %} | ||
*/{% endif %} | ||
public void {{methodName}}(Integer key, {{varName | upperFirst}} {{varName}}{% if hasParameters %}{%for parameterName, parameter in channel.parameters() %}, {% if parameter.schema().type() === 'object'%}{{parameterName | camelCase | upperFirst}}{% else %}{{parameter.schema().type() | toJavaType(false)}}{% endif %} {{parameterName | camelCase}}{% endfor %}{% endif %}) { | ||
public void {{methodName}}Async(Integer key, {{varName | upperFirst}} {{varName}}{% if hasParameters %}{%for parameterName, parameter in channel.parameters() %}, {% if parameter.schema().type() === 'object'%}{{parameterName | camelCase | upperFirst}}{% else %}{{parameter.schema().type() | toJavaType(false)}}{% endif %} {{parameterName | camelCase}}{% endfor %}{% endif %}) { |
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.
Please update method name in the PublisherService interface accordingly
} | ||
|
||
private String get{{methodName | upperFirst-}}Topic({% if hasParameters %}{%for parameterName, parameter in channel.parameters() %}{% if parameter.schema().type() === 'object'%}{{parameterName | camelCase | upperFirst}}{% else %}{{parameter.schema().type() | toJavaType(false)}}{% endif %} {{parameterName | camelCase}}{% if not loop.last %}, {% endif %}{% endfor %}{% endif %}) { | ||
public void {{methodName}}Sync(Integer key, {{varName | upperFirst}} {{varName}}{% if hasParameters %}{%for parameterName, parameter in channel.parameters() %}, {% if parameter.schema().type() === 'object'%}{{parameterName | camelCase | upperFirst}}{% else %}{{parameter.schema().type() | toJavaType(false)}}{% endif %} {{parameterName | camelCase}}{% endfor %}{% endif %}) { |
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.
Please add this method to the PublisherService interface
{% for channelName, channel in asyncapi.channels() %} | ||
{%- if channel.hasSubscribe() %} | ||
{%- for message in channel.subscribe().messages() %} | ||
import {{params['userJavaPackage']}}.model.{{message.payload().uid() | camelCase | upperFirst}}; | ||
{%- endfor -%} | ||
{% endif -%} | ||
{% endfor %} |
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.
this is required for payload object of the message
For issue #431
Description
This pull request enhances the
PublisherServiceImpl
class by incorporating robust exception handling mechanisms during Kafka message publishing. These improvements aim to ensure reliable message delivery and facilitate effective error management within our Kafka producer implementation.Prior to this update, the PublisherServiceImpl class lacked comprehensive exception handling during message publication. This omission posed risks of unhandled exceptions leading to application instability and potential message loss. Implementing proper exception handling is crucial for maintaining the reliability and resilience of the Kafka producer.
By integrating these exception handling strategies, the Kafka producer's resilience and reliability are significantly enhanced. These modifications ensure that message delivery failures are appropriately managed, thereby reducing the risk of data loss and improving overall system stability.