![]() To avoid duplicate notification sending, e.g., email or SMS, you need to save the previous sending fact somewhere. If the record already exists, you should return the existing one or skip creating a new one. It will verify the existence of the record before adding a new record. How to start using it? To avoid duplicate record creation in the database, you need to add a check. Enables the use of retries without concerns that something might fail when the consumer processes the message the second time.Usually, message handlers call other services, and it is quite difficult to manage transactions across many systems. They can be quite tricky in the messaging infrastructure. This approach has the following benefits: It means no duplicate database records, no emails, or other types of notifications sent many times. In the messaging architecture, the idempotency means making sure that it is possible to process the same message infinite times, and the result will always be identical. How this applies to the messaging, you might ask. Idempotence ( UK: /ˌɪdɛmˈpoʊtəns/, US: /ˌaɪdəm-/) is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application. Here is the definition of idempotence from Wikipedia: This tells us to ignore retrying NameTooShortException for both first and second-level retries. ![]() Retr圜onfigurator.Ignore(typeof(NameTooShortException)) I have added this line of code in two places compared to the previous example. Probably that should not cause immediate failure to the message handling because the message will be moved to the error queue, and who wants to handle potentially huge amounts of messages manually, right? First-level retries are life saviors in these types of situations. You will most likely get service unavailable exception while the call is made to that particular service. Imagine, one of the services you are integrated with becomes unavailable for a couple of minutes. Here are some prerequisites before you can successfully run the sample code used in this article:Īlso, this article assumes you have knowledge of C# and basic knowledge of RabbitMQ, MassTransit, and MongoDB. It will make your data handling pipeline more resilient and reliable. In this article, I am going to describe how to implement error handling using the RabbitMQ and MassTransit library. Have you ever thought of the way how to handle messages that tolerates various errors? And also needs less manual work to handle these errors? Let me introduce you to the message retries, idempotency, and outbox in the messaging pipeline. The application also becomes more responsive to users. Users don’t have to wait until something has finished processing. It allows the handling of time-consuming tasks in the background. Our company is not an exception in that sense, and we are using messaging quite a lot in our applications. By asynchronous handling, I mean the data processing functionality executed in the background. Quite often it comes together with asynchronous data handling via messaging infrastructure. Microservice architecture is trendy these days.
0 Comments
Leave a Reply. |