{"id":1358,"date":"2026-06-20T14:10:41","date_gmt":"2026-06-20T14:10:41","guid":{"rendered":"https:\/\/mesbahi.net\/fa\/?p=1358"},"modified":"2026-06-20T14:10:43","modified_gmt":"2026-06-20T14:10:43","slug":"inbox-outbox-patterns-overview","status":"publish","type":"post","link":"https:\/\/mesbahi.net\/fa\/blog\/1405\/03\/30\/inbox-outbox-patterns-overview\/","title":{"rendered":"\u0645\u0631\u0648\u0631 \u0627\u0644\u06af\u0648\u06cc outbox\/inbox"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u0637\u0631\u0627\u062d\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u060c \u062f\u0631 \u06a9\u0646\u0627\u0631 \u062a\u0645\u0627\u0645 \u0645\u0632\u0627\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0647\u060c \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062c\u062f\u06cc \u0647\u0645 \u0628\u0627 \u062e\u0648\u062f\u0634 \u0645\u06cc\u0627\u0631\u0647: \u062d\u0641\u0638 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062f\u0647 \u0648 \u0633\u0646\u062a\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06cc\u06a9 transaction \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0648 \u0647\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06cc\u0627 \u0628\u0627 \u0647\u0645 commit \u0645\u06cc\u200c\u0634\u0646\u060c \u06cc\u0627 \u0647\u0645\u0647 \u0628\u0627 \u0647\u0645 rollback \u0645\u06cc\u200c\u0634\u0646 \u0648 \u062c\u0627\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u062e\u0627\u0635\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0627\u0628\u062a \u0646\u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062a\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647\u060c \u062f\u0627\u0633\u062a\u0627\u0646 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0633\u0627\u062f\u06af\u06cc \u0646\u06cc\u0633\u062a. \u062e\u06cc\u0644\u06cc \u0648\u0642\u062a\u200c\u0647\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627\u06cc\u062f \u0647\u0645 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u062f\u0634 \u0631\u0648 \u0622\u067e\u062f\u06cc\u062a \u06a9\u0646\u0647\u060c \u0647\u0645 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u06cc\u0627 event \u0631\u0648 \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0647 \u0628\u0641\u0631\u0633\u062a\u0647. \u0645\u062b\u0644\u0627 Order Service \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u06a9\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0647 Payment Service\u060c Inventory Service \u06cc\u0627 Notification Service \u0647\u0645 \u062e\u0628\u0631 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc \u06a9\u0627\u063a\u0630 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a: \u0633\u0641\u0627\u0631\u0634 \u062b\u0628\u062a \u0634\u062f\u060c \u067e\u0633 \u0633\u0627\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0631\u0648 \u0645\u0637\u0644\u0639 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u0645\u0627 \u0633\u0648\u0627\u0644 \u0645\u0647\u0645 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a:<br>\u0627\u06af\u0631 \u0633\u0641\u0627\u0631\u0634 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u060c \u0648\u0644\u06cc \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0628\u0647 Kafka \u06cc\u0627 RabbitMQ\u060c \u0633\u0631\u0648\u06cc\u0633 crash \u06a9\u0631\u062f \u0686\u06cc \u0645\u06cc\u200c\u0634\u0647\u061f<br><br>\u06cc\u0627 \u0628\u0631\u0639\u06a9\u0633\u0634\u060c \u0627\u06af\u0631 \u067e\u06cc\u0627\u0645 \u0628\u0647 broker \u0627\u0631\u0633\u0627\u0644 \u0628\u0634\u0647\u060c \u0627\u0645\u0627 transaction \u062f\u0627\u062e\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u060c commit \u0646\u0634\u0647 \u0686\u06cc\u061f<br><br>\u0648 \u0628\u062f\u062a\u0631 \u0627\u0632 \u0647\u0645\u0647\u060c \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0627\u062a\u0641\u0627\u0642 \u0646\u06cc\u0645\u0647\u200c\u0634\u0628 \u0628\u0631\u0627\u06cc \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u0628\u06cc\u0648\u0641\u062a\u0647 \u0648 \u0634\u0645\u0627 \u0641\u0631\u062f\u0627 \u0635\u0628\u062d \u0645\u062a\u0648\u062c\u0647 \u0628\u0634\u06cc\u062f \u06a9\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633\u0650 \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u06cc\u0647 \u0686\u06cc\u0632 \u0645\u06cc\u200c\u06af\u0647 \u0648 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0647\u060c \u06cc\u0647 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0647\u060c \u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f \u062f\u0646\u0628\u0627\u0644 sync \u06a9\u0631\u062f\u0646\u060c \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc \u062c\u0627\u0627\u0641\u062a\u0627\u062f\u0647\u060c replay \u06a9\u0631\u062f\u0646 \u062f\u0633\u062a\u06cc event\u0647\u0627 \u0648 \u06a9\u0644\u06cc \u062f\u0631\u062f\u0633\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u0631\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062d\u0644 \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634\u060c \u062f\u0648 \u062a\u0627 \u0627\u0644\u06af\u0648\u06cc \u062e\u06cc\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u062c\u0627\u0627\u0641\u062a\u0627\u062f\u0647 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Transactional Outbox<\/strong><\/li>\n\n\n\n<li><strong>Idempotent Inbox<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0639\u0645\u0644 \u0645\u0639\u0645\u0648\u0644\u0627 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0627 \u0631\u0648 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 Outbox\/Inbox Pattern \u0645\u06cc\u200c\u0634\u0646\u0627\u0633\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0648 \u062a\u0627 \u0627\u0644\u06af\u0648 \u0642\u0631\u0627\u0631 \u0646\u06cc\u0633\u062a \u0633\u06cc\u0633\u062a\u0645 \u0631\u0648  \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0627\u0632 \u0628\u0627\u0628\u062a exactly-once \u06af\u0627\u0631\u0627\u0646\u062a\u06cc \u06a9\u0646\u0646\u061b \u0627\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646 \u06cc\u06a9 \u0637\u0631\u0627\u062d\u06cc \u0648\u0627\u0642\u0639\u200c\u0628\u06cc\u0646\u0627\u0646\u0647 \u0648 \u0642\u0627\u0628\u0644 \u0627\u062a\u06a9\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0645\u0647\u0645 \u06af\u0645 \u0646\u0634\u0646.<\/li>\n\n\n\n<li>\u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0628\u0627\u0639\u062b \u0627\u0646\u062c\u0627\u0645 \u0686\u0646\u062f\u0628\u0627\u0631\u0647\u200c\u06cc \u06a9\u0627\u0631\u0647\u0627\u060c \u0645\u062b\u0644 \u0686\u0646\u062f \u0628\u0627\u0631 \u0628\u0631\u062f\u0627\u0634\u062a \u0627\u0632 \u062d\u0633\u0627\u0628 \u06cc\u0627 \u0686\u0646\u062f \u0628\u0627\u0631 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0627\u0644\u0627 \u06cc\u0627&#8230; \u0646\u0634\u0646.<\/li>\n\n\n\n<li>\u062e\u0637\u0627\u0647\u0627 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0642\u0627\u0628\u0644 \u062c\u0628\u0631\u0627\u0646 \u0628\u0627\u0634\u0646.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0633\u0626\u0644\u0647 \u0627\u0635\u0644\u06cc: Dual Write Problem<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0634\u06a9\u0644 \u0627\u0632 \u062c\u0627\u06cc\u06cc \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0647 \u06a9\u0647 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062c\u0628\u0648\u0631 \u0645\u06cc\u200c\u0634\u0647 \u062f\u0648 \u062a\u0627 \u06a9\u0627\u0631 \u0631\u0648 \u0628\u0627 \u0647\u0645 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>\u062a\u063a\u06cc\u06cc\u0631 state \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f\u0634 \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633<\/li>\n\n\n\n<li>\u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0628\u0647 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0645\u062b\u0644 Message Broker<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0622\u0646\u0644\u0627\u06cc\u0646:<br>&#8211; Order Service \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u062f\u0627\u062e\u0644 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u062f\u0634 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; \u0628\u0639\u062f \u06cc\u06a9 event \u0628\u0647 \u0646\u0627\u0645 OrderCreated \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; Payment Service \u0648 Inventory Service \u0628\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a event \u0648\u0638\u0627\u06cc\u0641 \u062e\u0648\u062f\u0634\u0648\u0646 \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0633\u0626\u0644\u0647 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 Message Broker \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0627\u062e\u0644 \u06cc\u06a9 transaction \u0645\u0634\u062a\u0631\u06a9 \u0646\u06cc\u0633\u062a\u0646\u062f. \u06cc\u0639\u0646\u06cc \u0646\u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0631\u0627\u062d\u062a \u0628\u06af\u06cc\u0645:<br>\u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 publish \u067e\u06cc\u0627\u0645\u060c \u06cc\u0627 \u06a9\u0627\u0645\u0644 \u0648 \u062a\u0648\u0623\u0645 \u0628\u0627 \u0647\u0645 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0647 \u06cc\u0627 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0648\u0645 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u0634\u0647. \u0647\u0645\u06cc\u0646 \u0628\u0627\u0639\u062b Dual Write Problem \u062e\u0648\u0627\u0647\u062f \u0634\u062f.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a &#8211; \u06f1<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u0631\u0627\u06cc\u0637\u06cc \u0631\u0648 \u062a\u0635\u0648\u0631 \u06a9\u0646\u06cc\u0646 \u06a9\u0647 \u062f\u0627\u062f\u0647 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0647\u060c \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645\u060c \u0633\u0631\u0648\u06cc\u0633 crash \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2-1024x569.png\" alt=\"\" class=\"wp-image-1363\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2-1024x569.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2-300x167.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2-768x427.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2-1536x854.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-2.png 1711w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u062a\u06cc\u062c\u0647\u061f<\/strong> \u0633\u0641\u0627\u0631\u0634 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u060c \u0627\u0645\u0627 \u067e\u0631\u062f\u0627\u062e\u062a\u060c \u0627\u0631\u0633\u0627\u0644 \u0627\u0632 \u0627\u0646\u0628\u0627\u0631 \u06cc\u0627 \u0627\u0639\u0644\u0627\u0646 \u062e\u0631\u06cc\u062f \u0645\u0648\u0641\u0642 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u0634\u0647\u060c \u0686\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0628\u0647 \u062f\u0633\u062a \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0646\u0631\u0633\u06cc\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0646\u06af\u0627\u0647 Order Service \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a\u0647 \u0648\u0644\u06cc \u0627\u0632 \u0646\u06af\u0627\u0647 \u0628\u0642\u06cc\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u060c \u0627\u0646\u06af\u0627\u0631 \u0627\u0635\u0644\u0627 \u0686\u0646\u06cc\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a &#8211; \u06f2<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u06cc\u0627\u0645 \u0628\u0647 broker \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0647\u060c \u0627\u0645\u0627 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0642\u0635\u062f\u060c \u0627\u0639\u0645\u0627\u0644 \u0646\u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3-1024x572.png\" alt=\"\" class=\"wp-image-1364\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3-1024x572.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3-300x168.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3-768x429.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3-1536x858.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-3.png 1713w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0639\u06a9\u0633 \u062d\u0627\u0644\u062a \u0642\u0628\u0644 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u0647\u060c \u06cc\u0639\u0646\u06cc \u0633\u0631\u0648\u06cc\u0633 \u067e\u0631\u062f\u0627\u062e\u062a \u06cc\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0627\u0646\u0628\u0627\u0631\u060c \u067e\u06cc\u0627\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u060c \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0647 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0628\u062f\u0623 \u00ab\u0642\u0631\u0627\u0631 \u0628\u0648\u062f\u0647\u00bb \u062b\u0628\u062a \u0628\u0634\u0647\u061b \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647\u060c \u0648\u0644\u06cc \u062b\u0628\u062a \u062f\u0631 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0628\u062f\u0623 \u0628\u0627 \u0645\u0634\u06a9\u0644 \u0631\u0648\u0628\u0631\u0648 \u0645\u06cc\u200c\u0634\u0647 \u0648 rollback \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637\u06cc\u0647 \u06a9\u0647 \u062e\u06cc\u0644\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc event-driven \u062a\u0648\u06cc \u0645\u062d\u06cc\u0637 production \u0627\u0632\u0634 \u0636\u0631\u0628\u0647 \u0645\u06cc\u200c\u062e\u0648\u0631\u0646. \u0646\u0647 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646\u06a9\u0647 Kafka \u06cc\u0627 RabbitMQ \u06a9\u0627\u0631\u0634\u0648\u0646 \u0631\u0648 \u062f\u0631\u0633\u062a \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u062f\u0646\u060c \u0628\u0644\u06a9\u0647 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0631\u0632 transaction \u062f\u0631\u0633\u062a \u0637\u0631\u0627\u062d\u06cc \u0646\u0634\u062f\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u06af\u0648\u06cc Outbox<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Outbox Pattern \u0628\u0631\u0627\u06cc \u062d\u0644 \u0628\u062e\u0634 \u0627\u0648\u0644 \u0645\u0634\u06a9\u0644 \u0628\u0647\u200c\u06a9\u0627\u0631 \u0645\u06cc\u0627\u062f\u061b \u06cc\u0639\u0646\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06af\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0628\u062f\u0623 \u0627\u0639\u0645\u0627\u0644 \u0634\u062f\u060c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0627\u0648\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u06af\u0645 \u0646\u0645\u06cc\u200c\u0634\u0647\u061b \u0648 \u062d\u062a\u06cc \u0627\u06af\u0631 \u0628\u0631\u0648\u06a9\u0631 \u06cc\u0627&#8230; \u062f\u0686\u0627\u0631 \u0645\u0634\u06a9\u0644 \u0628\u0634\u0647\u060c \u0645\u0627 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0630\u06cc\u0644 \u0647\u0645\u0648\u0646 \u062a\u0631\u0627\u06a9\u0646\u0634\u06cc \u06a9\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0635\u0644\u06cc \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u0647\u060c \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u062f\u0647 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a:<br>&#8211; \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 broker \u0646\u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u06cc\u0645.<br>&#8211; \u0627\u0648\u0644 \u062f\u0627\u062e\u0644 \u0647\u0645\u0648\u0646 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u0647\u0645\u0648\u0646 transaction \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<br>&#8211; \u0628\u0639\u062f\u0627 \u06cc\u06a9 process \u062c\u062f\u0627 \u0645\u06cc\u0627\u062f \u0648 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 publish \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; \u0627\u06af\u0631 \u0647\u0645 \u062f\u0686\u0627\u0631 \u0648\u0642\u0641\u0647 \u0648 \u0645\u0634\u06a9\u0644 \u0634\u062f\u06cc\u0645\u060c \u0645\u0639\u0644\u0648\u0645\u0647 \u0686\u0647 \u067e\u06cc\u0627\u0645\u06cc \u062a\u0648\u06cc \u0635\u0641 \u0627\u0631\u0633\u0627\u0644 (\u0635\u0641 \u062e\u0631\u0648\u062c) \u0628\u0648\u062f\u0647 \u0648 \u0628\u0639\u062f \u0627\u0632 \u0628\u0631\u06af\u0634\u062a\u0646 \u0628\u0647 \u062d\u0627\u0644\u062a \u0639\u0627\u062f\u06cc\u060c \u0645\u06cc\u200c\u062e\u0648\u0646\u06cc\u0645 \u0648 \u0627\u0631\u0633\u0627\u0644\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0628\u0647 \u062c\u0627\u06cc:<br>\u06f1: Insert Order<br>\u06f2: Publish OrderCreated<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u0627\u0644 \u0631\u0648 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u0645:<br>\u06f1: Begin Transaction<br>\u06f2: Insert Order<br>\u06f3: Insert Outbox Message<br>\u06f4: Commit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u06cc\u0647 background worker \u06cc\u0627 message relay \u0645\u06cc\u0627\u062f \u062c\u062f\u0648\u0644 Outbox \u0631\u0648 \u0645\u06cc\u200c\u062e\u0648\u0646\u0647 \u0648 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc publish \u0646\u0634\u062f\u0647 \u0631\u0648 \u0628\u0647 broker \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"411\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4-1024x411.png\" alt=\"\" class=\"wp-image-1365\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4-1024x411.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4-300x120.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4-768x308.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4-1536x617.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-4.png 1893w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0632\u06cc\u062a \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648 \u0627\u06cc\u0646\u0647 \u06a9\u0647 business data \u0648 outbox message \u0637\u06cc \u06cc\u06a9 transaction \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u0634\u0646. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0633\u0641\u0627\u0631\u0634 \u062b\u0628\u062a \u0634\u062f\u060c event \u0645\u0631\u0628\u0648\u0637 \u0628\u0647\u0634 \u0647\u0645 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647. \u0634\u0627\u06cc\u062f \u0647\u0646\u0648\u0632 publish \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0648\u0644\u06cc \u06af\u0645 \u0646\u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06a9\u062a\u0647: Outbox \u062a\u0636\u0645\u06cc\u0646 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0647 \u067e\u06cc\u0627\u0645 \u0647\u0645\u0648\u0646 \u0644\u062d\u0638\u0647 \u0628\u0647 broker \u0628\u0631\u0633\u0647\u060c \u0628\u0644\u06a9\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0627\u06af\u0631 transaction \u0627\u0635\u0644\u06cc \u0645\u0648\u0641\u0642 \u0634\u062f\u060c \u067e\u06cc\u0627\u0645 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f\u0647 \u0648 \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0639\u062f\u0627 \u0628\u0631\u0627\u06cc publish \u06a9\u0631\u062f\u0646\u0634 \u0627\u0642\u062f\u0627\u0645 \u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u06cc\u0647 \u0633\u0648\u0621\u0628\u0631\u062f\u0627\u0634\u062a \u0631\u0627\u06cc\u062c \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0647\u061b Outbox \u0645\u0639\u0645\u0648\u0644\u0627 \u0645\u0627 \u0631\u0648 \u0628\u0647 \u0633\u0645\u062a at-least-once publishing \u0645\u06cc\u200c\u0628\u0631\u0647\u060c \u0648\u0644\u06cc \u0646\u0647 exactly-once delivery.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0646 Outbox Worker \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0627\u0632 \u062c\u062f\u0648\u0644 Outbox \u0645\u06cc\u200c\u062e\u0648\u0646\u0647\u060c \u0628\u0639\u062f \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0647 broker \u0645\u06cc\u200c\u0641\u0631\u0633\u062a\u0647\u060c \u0627\u0645\u0627 \u062f\u0631\u0633\u062a \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0631\u06a9\u0648\u0631\u062f Outbox \u0631\u0648 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a <code>Published<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u060c \u06cc\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u067e\u06cc\u0634 \u0645\u06cc\u0627\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"759\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-5-1024x759.png\" alt=\"\" class=\"wp-image-1366\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-5-1024x759.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-5-300x222.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-5-768x569.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-5.png 1528w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0648\u06cc \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637\u060c \u0647\u0645\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0645\u0645\u06a9\u0646\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 publish \u0628\u0634\u0647! \u067e\u0633 Outbox \u062c\u0644\u0648\u06cc \u06af\u0645 \u0634\u062f\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647\u060c \u0648\u0644\u06cc \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u062c\u0644\u0648\u06cc duplicate \u0634\u062f\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0646\u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0647\u0645\u06cc\u0646\u0647 \u06a9\u0647 Inbox Pattern \u0648 idempotency \u0645\u0647\u0645 \u0645\u06cc\u200c\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0644\u06af\u0648\u06cc Inbox<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Inbox Pattern \u0645\u0639\u0645\u0648\u0644\u0627 \u0633\u0645\u062a consumer \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647\u061b \u0647\u062f\u0641\u0634 \u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u06af\u0631 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0686\u0646\u062f \u0628\u0627\u0631 \u0628\u0647 consumer \u0628\u0631\u0633\u0647\u060c \u0627\u062b\u0631\u0634 \u0686\u0646\u062f \u0628\u0627\u0631 \u0627\u0639\u0645\u0627\u0644 \u0646\u0634\u0647. \u0645\u062b\u0644\u0627 \u0627\u06af\u0631 \u067e\u06cc\u0627\u0645 <code>OrderCreated<\/code> \u062f\u0648\u0628\u0627\u0631 \u0631\u0633\u06cc\u062f\u060c Payment Service \u0646\u0628\u0627\u06cc\u062f \u062f\u0648\u0628\u0627\u0631 \u0627\u0632 \u06a9\u06cc\u0641 \u067e\u0648\u0644 \u06a9\u0627\u0631\u0628\u0631 \u067e\u0648\u0644 \u06a9\u0645 \u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0627 \u0627\u06af\u0647 \u067e\u06cc\u0627\u0645 <code>EmployeeTerminated<\/code> \u062f\u0648\u0628\u0627\u0631 \u0631\u0633\u06cc\u062f\u060c Access Management \u0646\u0628\u0627\u06cc\u062f \u062f\u0648\u0628\u0627\u0631 \u0647\u0645\u0648\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0647 \u0648 \u0631\u0641\u062a\u0627\u0631\u0647\u0627\u06cc \u0639\u062c\u06cc\u0628 \u0627\u0632\u0634 \u0628\u0631\u0648\u0632 \u0628\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u062f\u0647 Inbox \u0633\u0627\u062f\u0647 \u0627\u0633\u062a:<br>&#8211; \u0647\u0631 \u067e\u06cc\u0627\u0645 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u06cc\u06a9\u062a\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<br>&#8211; Consumer \u0642\u0628\u0644 \u0627\u0632 \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u06cc\u0627\u0645\u060c \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0627\u06cc\u0646 \u067e\u06cc\u0627\u0645 \u067e\u0631\u062f\u0627\u0632\u0634 \u0634\u062f\u0647 \u06cc\u0627 \u0646\u0647.<br>&#8211; \u0627\u06af\u0647 \u0642\u0628\u0644\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0634\u062f\u0647\u060c \u067e\u06cc\u0627\u0645 \u0631\u0648 skip \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; \u0648\u0644\u06cc \u0627\u06af\u0647 \u062c\u062f\u06cc\u062f\u0647\u060c business operation \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647 \u0648 \u0634\u0646\u0627\u0633\u0647 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u062a\u0648\u06cc \u062c\u062f\u0648\u0644 Inbox \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc business operation \u0648 \u062b\u0628\u062a Inbox record \u0628\u0627\u06cc\u062f \u0637\u06cc \u06cc\u06a9 transaction \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0646.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"301\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6-1024x301.png\" alt=\"\" class=\"wp-image-1370\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6-1024x301.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6-300x88.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6-768x226.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6-1536x451.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-6.png 1849w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0647\u0645 business operation \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647\u061b \u0648\u0644\u06cc Inbox record \u062b\u0628\u062a \u0646\u0634\u0647\u060c \u067e\u06cc\u0627\u0645 \u0628\u0639\u062f\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u062e\u0648\u0627\u0647 \u0634\u062f. \u0648 \u0627\u06af\u0631 \u0647\u0645 Inbox record \u062b\u0628\u062a \u0628\u0634\u0647 \u0648\u0644\u06cc business operation \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u0647\u060c \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 skip \u0645\u06cc\u200c\u0634\u0646. \u067e\u0633 \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0627 <strong>\u0628\u0627\u06cc\u062f \u0628\u0627 \u0647\u0645<\/strong> \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">\u062a\u0635\u062f\u06cc\u0642 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u06cc\u0627\u0645 \u06a9\u062c\u0627 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647\u061f<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0637\u0631\u0627\u062d\u06cc consumer\u060c \u0637\u0631\u0627\u062d\u06cc \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0648 \u0631\u0648\u0634 \u062a\u0635\u062f\u06cc\u0642 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u06cc\u0627\u0645 \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u0647 \u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u0631\u0633\u062a \u0627\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f \u0639\u0645\u0648\u0645\u0627\u06cc \u0627\u06cc\u0646 \u0634\u06a9\u0644\u06cc\u0647:<br>&#8211; \u067e\u06cc\u0627\u0645 \u0627\u0632 broker \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u0634\u0647.<br>&#8211; Consumer \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u062f\u0634 \u0631\u0648 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062a\u0627 \u0627\u06af\u0647 \u067e\u06cc\u0627\u0645 \u062c\u062f\u06cc\u062f \u0628\u0648\u062f\u060c business operation \u0631\u0648 \u0627\u0646\u062c\u0627\u0645 \u0628\u062f\u0647.<br>&#8211; Inbox record \u0631\u0648 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; Transaction \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 commit \u0645\u06cc\u200c\u06a9\u0646\u0647.<br>&#8211; \u0628\u0639\u062f \u0627\u0632 commit\u060c \u067e\u06cc\u0627\u0645 \u0631\u0648 \u062a\u0627\u06cc\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"986\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-7-1024x986.png\" alt=\"\" class=\"wp-image-1372\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-7-1024x986.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-7-300x289.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-7-768x739.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-7.png 1263w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0627\u06af\u0631 \u0642\u0628\u0644 \u0627\u0632 commit\u060c \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0639\u062f \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0628\u0647 \u0647\u0631 \u062f\u0644\u06cc\u0644\u06cc \u0628\u0627 \u0645\u0634\u06a9\u0644 \u0631\u0648\u0628\u0631\u0648 \u0628\u0634\u0647\u060c \u067e\u06cc\u0627\u0645 \u0627\u0632 \u0646\u06af\u0627\u0647 broker \u0645\u0635\u0631\u0641 \u0634\u062f\u0647\u060c \u0648\u0644\u06cc \u0627\u062b\u0631\u0634 \u062a\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062b\u0628\u062a \u0646\u0634\u062f\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0644\u06cc \u0627\u06af\u0647 \u062a\u0631\u0627\u06a9\u0646\u0634 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u0647 \u0648\u0644\u06cc \u0642\u0628\u0644 \u0627\u0632 \u062a\u0627\u06cc\u06cc\u062f \u067e\u06cc\u0627\u0645\u060c consumer \u062f\u0686\u0627\u0631 \u0645\u0634\u06a9\u0644 \u0628\u0634\u0647\u060c broker \u0645\u0645\u06a9\u0646\u0647 \u0647\u0645\u0648\u0646 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u062d\u0648\u06cc\u0644 \u0628\u062f\u0647. \u062a\u0648\u06cc \u0686\u0646\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637\u06cc\u060c Inbox \u062c\u0644\u0648\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0648 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0647. \u0627\u06cc\u0646 \u0637\u0631\u0627\u062d\u06cc \u0648\u0627\u0642\u0639\u200c\u0628\u06cc\u0646\u0627\u0646\u0647\u200c \u0627\u0633\u062a \u0648 \u0628\u0627 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0634\u06a9\u0644\u0627\u062a\u060c \u0628\u0631\u0627\u06cc  \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0645\u0646\u0627\u0633\u0628\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644: \u0633\u06cc\u0633\u062a\u0645 \u0641\u0631\u0648\u0634\u06af\u0627\u0647\u06cc (\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634 \u0648 \u067e\u0631\u062f\u0627\u062e\u062a)<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u06a9 \u0633\u0641\u0627\u0631\u0634 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647. Order Service \u0628\u0627\u06cc\u062f \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0647 \u0648 \u0627\u06cc\u0648\u0646\u062a \u062b\u0628\u062a \u0633\u0641\u0627\u0631\u0634 \u0631\u0648 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0646\u0647 \u062a\u0627 Payment Service \u0628\u062a\u0648\u0646\u0647 \u0641\u0631\u0627\u06cc\u0646\u062f \u067e\u0631\u062f\u0627\u062e\u062a \u0631\u0648 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647 \u062c\u062f\u0648\u0644 Outbox<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CREATE TABLE OutboxMessages (\n    Id UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,\n    AggregateType NVARCHAR(100) NOT NULL,\n    AggregateId NVARCHAR(100) NOT NULL,\n    EventType NVARCHAR(200) NOT NULL,\n    EventVersion INT NOT NULL,\n    Payload NVARCHAR(MAX) NOT NULL,\n    Status NVARCHAR(50) NOT NULL,\n    RetryCount INT NOT NULL DEFAULT 0,\n    CreatedAt DATETIME2 NOT NULL,\n    PublishedAt DATETIME2 NULL,\n    LastError NVARCHAR(MAX) NULL\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">TABLE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">OutboxMessages<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    Id <\/span><span style=\"color: #81A1C1\">UNIQUEIDENTIFIER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">PRIMARY KEY<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    AggregateType <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    AggregateId <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    EventType <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">200<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    EventVersion <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    Payload <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(MAX) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">Status<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">50<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    RetryCount <\/span><span style=\"color: #81A1C1\">INT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">DEFAULT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    CreatedAt <\/span><span style=\"color: #81A1C1\">DATETIME2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    PublishedAt <\/span><span style=\"color: #81A1C1\">DATETIME2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    LastError <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(MAX) <\/span><span style=\"color: #81A1C1\">NULL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 production \u0645\u0639\u0645\u0648\u0644\u0627 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u0645\u060c \u0645\u062b\u0644:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CorrelationId\nCausationId\nTraceId\nNextRetryAt\nLockedBy\nLockedUntil\nOccurredAt<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">CorrelationId<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">CausationId<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">TraceId<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">NextRetryAt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">LockedBy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">LockedUntil<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">OccurredAt<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062b\u0628\u062a \u0633\u0641\u0627\u0631\u0634 \u0648 Outbox \u0637\u06cc \u06cc\u06a9 \u062a\u0631\u0627\u06a9\u0646\u0634:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>BEGIN TRANSACTION;\n\nINSERT INTO Orders (id, user_id, total_amount, status)\nVALUES ('order_999', 'user_123', 150, 'Pending');\n\nINSERT INTO OutboxMessages (\n    Id,\n    AggregateType,\n    AggregateId,\n    EventType,\n    EventVersion,\n    Payload,\n    Status,\n    CreatedAt\n)\nVALUES (\n    'event_001',\n    'Order',\n    'order_999',\n    'OrderCreated',\n    1,\n    '{\"orderId\":\"order_999\",\"userId\":\"user_123\",\"amount\":150}',\n    'Pending',\n    SYSUTCDATETIME()\n);\n\nCOMMIT;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">TRANSACTION<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">INSERT INTO<\/span><span style=\"color: #D8DEE9FF\"> Orders (id, user_id, total_amount, <\/span><span style=\"color: #81A1C1\">status<\/span><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">VALUES<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">order_999<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">user_123<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #B48EAD\">150<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Pending<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">INSERT INTO<\/span><span style=\"color: #D8DEE9FF\"> OutboxMessages (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    Id,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    AggregateType,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    AggregateId,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    EventType,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    EventVersion,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    Payload,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">Status<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    CreatedAt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">VALUES<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">event_001<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Order<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">order_999<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">OrderCreated<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">{&quot;orderId&quot;:&quot;order_999&quot;,&quot;userId&quot;:&quot;user_123&quot;,&quot;amount&quot;:150}<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">Pending<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #88C0D0\">SYSUTCDATETIME<\/span><span style=\"color: #D8DEE9FF\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">COMMIT<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062a\u0631\u0627\u06a9\u0646\u0634 \u0645\u0648\u0641\u0642 \u0628\u0634\u0647\u060c \u0647\u0645 \u0633\u0641\u0627\u0631\u0634 \u062b\u0628\u062a \u0634\u062f\u0647\u060c \u0647\u0645 \u0627\u06cc\u0648\u0646\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647\u0634 \u062f\u0627\u062e\u0644 Outbox \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647. \u062d\u0627\u0644\u0627 \u067e\u06cc\u0627\u0645 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 Outbox Worker \u0627\u0633\u062a \u062a\u0627 \u0628\u0639\u062f\u0627 publish \u0628\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0627\u062f\u0647 \u062c\u062f\u0648\u0644 Inbox<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0633\u0645\u062a Payment Service\u060c \u0628\u0627\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0628\u0634\u06cc\u0645 \u06a9\u0647 \u067e\u06cc\u0627\u0645 <code>event_001<\/code> \u0641\u0642\u0637 \u06cc\u06a9 \u0628\u0627\u0631 \u067e\u0631\u062f\u0627\u0632\u0634 \u0648 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>CREATE TABLE InboxMessages (\n    MessageId UNIQUEIDENTIFIER NOT NULL,\n    ConsumerName NVARCHAR(200) NOT NULL,\n    ProcessedAt DATETIME2 NOT NULL,\n    PRIMARY KEY (MessageId, ConsumerName)\n);<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">CREATE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">TABLE<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">InboxMessages<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    MessageId <\/span><span style=\"color: #81A1C1\">UNIQUEIDENTIFIER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ConsumerName <\/span><span style=\"color: #81A1C1\">NVARCHAR<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #B48EAD\">200<\/span><span style=\"color: #D8DEE9FF\">) <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ProcessedAt <\/span><span style=\"color: #81A1C1\">DATETIME2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">NOT NULL<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">PRIMARY KEY<\/span><span style=\"color: #D8DEE9FF\"> (MessageId, ConsumerName)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0631\u0627 <code>ConsumerName<\/code>\u061f<\/strong> \u0686\u0648\u0646 \u06af\u0627\u0647\u06cc \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062a\u0648\u0633\u0637 \u0686\u0646\u062f\u06cc\u0646 consumer \u06cc\u0627 handler \u0645\u062e\u062a\u0644\u0641 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc\u200c\u0634\u0647. \u067e\u0633 unique \u0628\u0648\u062f\u0646 \u0641\u0642\u0637 \u0628\u0631 \u0627\u0633\u0627\u0633 <code>MessageId<\/code> \u06a9\u0627\u0641\u06cc \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u062a\u0631\u06a9\u06cc\u0628 <code>MessageId<\/code> \u0648 <code>ConsumerName<\/code> \u06a9\u0646\u062a\u0631\u0644 \u062f\u0642\u06cc\u0642\u200c\u062a\u0631\u06cc \u0628\u0647\u0645\u0648\u0646 \u0645\u06cc\u200c\u062f\u0647 (\u062e\u0637\u0627\u06cc\u0627\u0628\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a\u060c \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u062e\u0648\u0627\u0647\u062f \u0634\u062f).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u06cc\u0627\u0645 \u062f\u0631 Payment Service<\/strong><\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>BEGIN TRANSACTION;\n\nINSERT INTO InboxMessages (MessageId, ConsumerName, ProcessedAt)\nVALUES ('event_001', 'PaymentService', SYSUTCDATETIME());\n\nUPDATE UserWallets\nSET balance = balance - 150\nWHERE user_id = 'user_123'\n  AND balance >= 150;\n\nCOMMIT;<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">BEGIN<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">TRANSACTION<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">INSERT INTO<\/span><span style=\"color: #D8DEE9FF\"> InboxMessages (MessageId, ConsumerName, ProcessedAt)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">VALUES<\/span><span style=\"color: #D8DEE9FF\"> (<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">event_001<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">PaymentService<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">, <\/span><span style=\"color: #88C0D0\">SYSUTCDATETIME<\/span><span style=\"color: #D8DEE9FF\">());<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">UPDATE<\/span><span style=\"color: #D8DEE9FF\"> UserWallets<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">SET<\/span><span style=\"color: #D8DEE9FF\"> balance <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> balance <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">150<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">WHERE<\/span><span style=\"color: #D8DEE9FF\"> user_id <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">user_123<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #81A1C1\">AND<\/span><span style=\"color: #D8DEE9FF\"> balance <\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">150<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">COMMIT<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0628\u062a\u0647 \u0628\u0631\u0627\u06cc \u0645\u062d\u0635\u0648\u0644 \u0648\u0627\u0642\u0639\u06cc \u0628\u0627\u06cc\u062f \u062e\u0637\u0627\u06cc duplicate key \u0631\u0648 \u0647\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u0645. \u0648 \u0627\u06af\u0631 insert \u062f\u0627\u062e\u0644 Inbox \u0628\u0647 \u062e\u0627\u0637\u0631 primary key \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u0647\u060c \u06cc\u0639\u0646\u06cc \u067e\u06cc\u0627\u0645 \u0642\u0628\u0644\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0634\u062f\u0647 \u0648 \u0628\u0627\u06cc\u062f \u0628\u06cc\u062e\u06cc\u0627\u0644\u0634 \u0634\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9 \u0646\u06a9\u062a\u0647 \u062f\u06cc\u06af\u0647 \u0647\u0645 \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0627\u0644\u06cc\u060c \u0641\u0642\u0637 Inbox \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a. \u062e\u0648\u062f operation \u0647\u0645 \u0628\u0627\u06cc\u062f \u062a\u0627 \u062c\u0627\u06cc \u0645\u0645\u06a9\u0646 idempotent \u0637\u0631\u0627\u062d\u06cc \u0628\u0634\u0647. \u0645\u062b\u0644\u0627 \u0628\u0647\u062a\u0631\u0647 payment \u06cc\u0627 transaction \u0645\u0627\u0644\u06cc \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 business \u0645\u0633\u062a\u0642\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u062a\u0627 \u062d\u062a\u06cc \u0627\u06af\u0647 \u0627\u0632 \u0645\u0633\u06cc\u0631 \u062f\u06cc\u06af\u0647\u200c\u0627\u06cc \u0647\u0645 \u062f\u0648\u0628\u0627\u0631\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u062f\u060c \u062f\u0648\u0628\u0627\u0631 \u067e\u0648\u0644 \u06a9\u0645 \u0646\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0628\u0631\u0631\u0633\u06cc \u062c\u0632\u0626\u06cc\u200c\u062a\u0631 \u0645\u0641\u0647\u0648\u0645 Idempotency<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Idempotency \u06cc\u0639\u0646\u06cc \u0627\u06af\u0631 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0686\u0646\u062f \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0634\u062f\u060c \u0646\u062a\u06cc\u062c\u0647 \u0646\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u06cc\u06a9 \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0634\u062f\u0646\u0634 \u0628\u0627\u0634\u0647. \u0645\u062b\u0644\u0627 \u0627\u06cc\u0646 \u0645\u0639\u0645\u0648\u0644\u0627 idempotent \u0627\u0633\u062a:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>PUT \/users\/123\/status\/active<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">PUT <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">users<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #B48EAD\">123<\/span><span style=\"color: #81A1C1\">\/status\/<\/span><span style=\"color: #D8DEE9FF\">active<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0686\u0646\u062f \u0628\u0627\u0631 \u0647\u0645 \u0627\u062c\u0631\u0627 \u0628\u0634\u0647\u060c \u0646\u0647\u0627\u06cc\u062a\u0627 \u06a9\u0627\u0631\u0628\u0631 active \u0627\u0633\u062a. \u0627\u0645\u0627 \u0627\u06cc\u0646 \u062e\u0637\u0631\u0646\u0627\u06a9\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>POST \/payments\/capture<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">POST <\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">payments<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #D8DEE9FF\">capture<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0686\u0648\u0646 \u0627\u06af\u0631 \u0686\u0646\u062f \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u0628\u0634\u0647\u060c \u0645\u0645\u06a9\u0646\u0647 \u0686\u0646\u062f \u0628\u0627\u0631 \u067e\u0648\u0644 \u06af\u0631\u0641\u062a\u0647 \u0628\u0634\u0647. \u062a\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc event-driven \u0628\u0627\u06cc\u062f consumer\u0647\u0627 \u0631\u0648 \u0637\u0648\u0631\u06cc \u0637\u0631\u0627\u062d\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u067e\u06cc\u0627\u0645 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0628\u0627\u0639\u062b side effect \u062a\u06a9\u0631\u0627\u0631\u06cc \u0646\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c:<br>&#8211; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Inbox table<br>&#8211; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 MessageId \u06cc\u06a9\u062a\u0627<br>&#8211; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 business key \u0645\u062b\u0644 OrderId \u06cc\u0627 PaymentId<br>&#8211; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 unique constraint<br>&#8211; \u0637\u0631\u0627\u062d\u06cc operation \u0628\u0647 \u0634\u06a9\u0644 state transition<br>&#8211; \u0628\u0631\u0631\u0633\u06cc \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0642\u0628\u0644 \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627:<br>&#8211; \u0627\u06af\u0631 \u0635\u0648\u0631\u062a\u062d\u0633\u0627\u0628 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0633\u0641\u0627\u0631\u0634 \u0642\u0628\u0644\u0627 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647\u060c \u0635\u0648\u0631\u062a\u062d\u0633\u0627\u0628 \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u0634 \u0646\u0633\u0627\u0632.<br>&#8211; \u0627\u06af\u0631 \u067e\u0631\u062f\u0627\u062e\u062a \u0642\u0628\u0644\u0627 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0646\u062c\u0627\u0645\u0634 \u0646\u062f\u0647.<br>&#8211; \u0627\u06af\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0631\u062e\u0635\u06cc \u06a9\u0627\u0631\u0645\u0646\u062f \u0642\u0628\u0644\u0627 sync \u0634\u062f\u0647\u060c \u062f\u0648\u0628\u0627\u0631\u0647 sync \u0646\u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0637\u0631\u0627\u062d\u06cc \u0628\u0647\u062a\u0631 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0627\u06cc\u0646\u0647 \u06a9\u0647 \u06a9\u0644 entity \u062f\u0627\u062e\u0644\u06cc \u0631\u0648 serialize \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u06cc\u0648\u0646\u062a \u0628\u0641\u0631\u0633\u062a\u06cc\u0645. \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c consumer\u0647\u0627 \u0631\u0648 \u0628\u0647 \u0645\u062f\u0644 \u062f\u0627\u062e\u0644\u06cc \u0633\u0631\u0648\u06cc\u0633 producer \u0648\u0627\u0628\u0633\u062a\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627 \u0627\u06cc\u0646 \u0637\u0631\u0627\u062d\u06cc \u062e\u0648\u0628\u06cc <strong>\u0646\u06cc\u0633\u062a<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n  \"employee\": {\n    \"id\": 123,\n    \"firstName\": \"Amin\",\n    \"lastName\": \"Mesbahi\",\n    \"salary\": 100000,\n    \"address\": \"...\",\n    \"managerNotes\": \"...\"\n  }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">employee<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">id<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #B48EAD\">123<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">firstName<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Amin<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">lastName<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Mesbahi<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">salary<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #B48EAD\">100000<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">address<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">...<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">managerNotes<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">...<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u062a\u0631\u0647 \u062a\u0627 integration event \u06a9\u0648\u0686\u06cc\u06a9\u060c \u0645\u0634\u062e\u0635\u060c versioned \u0648 contract-oriented \u0628\u0627\u0634\u0647:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>{\n  \"messageId\": \"event_001\",\n  \"type\": \"OrderCreated\",\n  \"version\": 1,\n  \"occurredAt\": \"2026-06-14T10:00:00Z\",\n  \"correlationId\": \"corr_123\",\n  \"payload\": {\n    \"orderId\": \"order_999\",\n    \"userId\": \"user_123\",\n    \"amount\": 150\n  }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">messageId<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">event_001<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">type<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">OrderCreated<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">version<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">occurredAt<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">2026-06-14T10:00:00Z<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">correlationId<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">corr_123<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">payload<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">orderId<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">order_999<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">userId<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">user_123<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">amount<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">: <\/span><span style=\"color: #B48EAD\">150<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 event \u0628\u0647\u062a\u0631\u0647 version \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647 \u0686\u0648\u0646 \u0634\u0627\u06cc\u062f \u0633\u0627\u062e\u062a\u0627\u0631 event \u0627\u0645\u0631\u0648\u0632\u060c \u0634\u0634 \u0645\u0627\u0647 \u062f\u06cc\u06af\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0647. \u0627\u06af\u0631 \u0628\u062f\u0648\u0646 versioning \u0641\u06cc\u0644\u062f\u06cc \u0631\u0648 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645\u060c  \u06cc\u0627 \u0646\u0648\u0639 \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0631\u0648 \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u06cc\u0645 \u06cc\u0627 \u0645\u0641\u0647\u0648\u0645 \u0648 \u06a9\u0627\u0631\u0628\u0631\u062f \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631\u06cc \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0631\u0648 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u0645\u060c \u0648 \u0628\u0627 \u0686\u0646\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u0645\u0645\u06a9\u0646\u0647 consumer\u0647\u0627\u06cc \u062f\u06cc\u06af\u0647 \u062f\u0686\u0627\u0631 \u0645\u0634\u06a9\u0644 \u0628\u0634\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u062a\u0641\u0627\u0648\u062a Domain Event \u0648 Integration Event<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0647\u0645 \u06cc\u06a9\u06cc \u0627\u0632 \u062c\u0627\u0647\u0627\u06cc\u06cc\u0647 \u06a9\u0647 \u0645\u0639\u0645\u0648\u0644\u0627 \u0642\u0627\u0637\u06cc \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Domain Event<\/strong> \u0686\u06cc\u0632\u06cc\u0647 \u06a9\u0647 \u062f\u0627\u062e\u0644 \u0645\u0631\u0632 domain \u0634\u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0627\u0641\u062a\u0627\u062f\u0647. \u0645\u0645\u06a9\u0646\u0647 \u063a\u0646\u06cc\u200c\u062a\u0631 \u0628\u0627\u0634\u0647 \u0648 \u0628\u0647 \u0645\u062f\u0644 \u062f\u0627\u062e\u0644\u06cc \u0634\u0645\u0627 \u0646\u0632\u062f\u06cc\u06a9\u200c\u062a\u0631.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Integration Event <\/strong>\u0686\u06cc\u0632\u06cc\u0647 \u06a9\u0647 \u0642\u0631\u0627\u0631\u0647 \u0628\u06cc\u0631\u0648\u0646 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u0634\u0645\u0627 \u0645\u0635\u0631\u0641 \u0628\u0634\u0647. \u067e\u0633 \u0628\u0627\u06cc\u062f \u067e\u0627\u06cc\u062f\u0627\u0631\u062a\u0631\u060c \u06a9\u0648\u0686\u06a9\u200c\u062a\u0631\u060c \u0627\u0645\u0646\u200c\u062a\u0631 \u0648 \u0645\u0646\u0627\u0633\u0628 contract \u0628\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627 \u062f\u0627\u062e\u0644 Order Service \u0645\u0645\u06a9\u0646\u0647 OrderPlacedDomainEvent \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u061b \u0627\u0645\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0628\u06cc\u0631\u0648\u0646 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 OrderCreatedIntegrationEvent \u0628\u0627\u0634\u0647. \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0627\u062e\u0644 domain \u0627\u062a\u0641\u0627\u0642 \u0627\u0641\u062a\u0627\u062f\u0647\u060c \u0647\u0645\u0648\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0647\u0633\u062a\u060c \u0648 \u0628\u0627 \u0647\u0645\u0648\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0647 \u0628\u06cc\u0631\u0648\u0646 publish \u0628\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>\u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Outbox Publisher<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062e\u0648\u0646\u062f\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0627\u0632 \u062c\u062f\u0648\u0644 Outbox \u0648 \u0627\u0646\u062a\u0642\u0627\u0644\u0634\u0648\u0646 \u0628\u0647 broker\u060c \u0645\u0639\u0645\u0648\u0644\u0627 \u062f\u0648 \u0631\u0648\u0634 \u0627\u0635\u0644\u06cc \u062f\u0627\u0631\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0648\u0634 \u0627\u0648\u0644: <\/strong>Polling Publisher \u06cc\u0639\u0646\u06cc \u06cc\u06a9 background worker \u0647\u0631 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u06cc\u0627 \u0686\u0646\u062f \u0645\u06cc\u0644\u06cc\u200c\u062b\u0627\u0646\u06cc\u0647 \u06cc\u06a9 \u0628\u0627\u0631 \u062c\u062f\u0648\u0644 Outbox \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc <code>Pending<\/code> \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"127\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8-1024x127.png\" alt=\"\" class=\"wp-image-1375\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8-1024x127.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8-300x37.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8-768x95.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8-1536x190.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-8.png 1828w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u0632\u06cc\u062a\u200c\u0647\u0627\u0634:<\/strong><br>&#8211; \u0633\u0627\u062f\u0647 \u0627\u0633\u062a.<br>&#8211; \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0627\u0634 \u0631\u0627\u062d\u062a\u0647.<br>&#8211; \u0628\u0631\u0627\u06cc \u062e\u06cc\u0644\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0648 \u0645\u062a\u0648\u0633\u0637 \u06a9\u0627\u0641\u06cc\u0647.<br>&#8211; \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u06a9\u0645\u062a\u0631\u06cc \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0627\u0644\u0634\u200c\u0647\u0627:<\/strong><br>&#8211; \u0645\u0645\u06a9\u0646\u0647 \u062a\u0627\u062e\u06cc\u0631 \u0627\u0636\u0627\u0641\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0647.<br>&#8211; \u0627\u06af\u0647 \u062f\u0631\u0633\u062a \u0637\u0631\u0627\u062d\u06cc \u0646\u0634\u0647 \u0628\u0647 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0641\u0634\u0627\u0631 \u0645\u0636\u0627\u0639\u0641 \u0645\u06cc\u0627\u0631\u0647.<br>&#8211; \u0646\u06cc\u0627\u0632 \u0628\u0647 locking\u060c retry \u0648 backoff \u062f\u0627\u0631\u0647.<br>&#8211; \u062f\u0631 multi-instance deployment \u0628\u0627\u06cc\u062f \u0645\u0631\u0627\u0642\u0628 \u0628\u0627\u0634\u06cc\u0645 \u0686\u0646\u062f worker \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0631\u0648 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0631\u0646\u062f\u0627\u0631\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u0631\u062f\u0627\u0632\u0634 \u0647\u0645\u200c\u0632\u0645\u0627\u0646\u060c \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u0648\u0639 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0645\u06cc\u200c\u0634\u0647 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 <code>SELECT FOR UPDATE SKIP LOCKED<\/code>\u060c \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc <code>LockedBy<\/code> \u0648 <code>LockedUntil<\/code>\u060c \u06cc\u0627 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645\u200c\u0647\u0627\u06cc locking \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0631\u0648\u0634 \u062f\u0648\u0645:<\/strong> Transaction Log Tailing \u06cc\u0627 CDC\u060c \u062a\u0648\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 worker \u0645\u062f\u0627\u0645 \u062c\u062f\u0648\u0644 \u0631\u0648 poll \u06a9\u0646\u0647\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0627\u0632 \u0631\u0648\u06cc transaction log \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u062e\u0648\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0646. \u0645\u062b\u0644\u0627 WAL \u062f\u0631 PostgreSQL \u06cc\u0627 Binlog \u062f\u0631 MySQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Debezium \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062c\u062f\u0648\u0644 Outbox \u0631\u0648 \u0628\u062e\u0648\u0646\u0646 \u0648 \u0628\u0647 Kafka \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u0646.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"229\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9-1024x229.png\" alt=\"\" class=\"wp-image-1377\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9-1024x229.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9-300x67.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9-768x171.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9-1536x343.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-9.png 1845w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u0632\u06cc\u062a\u200c\u0647\u0627:<\/strong><br>&#8211; \u0628\u0631\u0627\u06cc throughput \u0628\u0627\u0644\u0627 \u0645\u0646\u0627\u0633\u0628\u200c\u062a\u0631\u0647.<br>&#8211; \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 real-time \u0627\u0633\u062a.<br>&#8211; \u0641\u0634\u0627\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 polling \u0631\u0648\u06cc \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u06a9\u0645\u062a\u0631 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0627\u0644\u0634\u200c\u0647\u0627:<\/strong><br>&#8211; \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u0647.<br>&#8211; \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0648 \u0645\u0627\u0646\u06cc\u062a\u0648\u0631\u06cc\u0646\u06af \u062c\u062f\u06cc\u200c\u062a\u0631\u0647.<br>&#8211; debug \u06a9\u0631\u062f\u0646\u0634 \u0628\u0631\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0633\u062e\u062a\u200c\u062a\u0631\u0647.<br>&#8211; \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 Kafka \u0648 Kafka Connect \u0645\u0639\u0646\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u06af\u06cc\u0645 CDC \u0647\u0645\u06cc\u0634\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0627\u0633\u062a\u060c \u062f\u0642\u06cc\u0642 \u0646\u06cc\u0633\u062a. \u0628\u0631\u0627\u06cc \u0628\u0639\u0636\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0639\u0627\u0644\u06cc\u0647\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u062e\u06cc\u0644\u06cc \u0627\u0632 \u062a\u06cc\u0645\u200c\u0647\u0627\u060c \u06cc\u06a9 Polling Publisher \u062f\u0631\u0633\u062a \u0648 \u062a\u0645\u06cc\u0632 \u06a9\u0627\u0645\u0644\u0627 \u06a9\u0627\u0641\u06cc\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">\u0627\u0628\u0632\u0627\u0631\u0647\u0627 \u0648 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc inbox\/outbox<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 NET. \u0686\u0646\u062f\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647 \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/massient.com\/\" data-type=\"link\" data-id=\"https:\/\/massient.com\/\">MassTransit <\/a>\u06cc\u06a9\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc messaging \u0627\u0633\u062a (\u06cc\u0627 \u0634\u0627\u06cc\u062f\u0645 \u0628\u0648\u062f! \u0686\u0648\u0646 \u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u0631\u0648\u06cc\u06a9\u0631\u062f\u0634 \u0648 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u0645\u062f\u0644 \u062a\u062c\u0627\u0631\u06cc \u0648 \u0642\u06cc\u0645\u062a \u0628\u0627\u0644\u0627\u06cc \u0644\u0627\u06cc\u0633\u0646\u0633\u060c \u0628\u0631\u062e\u06cc \u0634\u0631\u06a9\u062a\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06cc\u06a9 \u0631\u0648 \u0648\u0627\u062f\u0627\u0631 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u062c\u062f\u062f \u06a9\u0631\u062f) \u0648 \u0628\u0627 transport\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 RabbitMQ\u060c Azure Service Bus \u0648 Amazon SQS \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647. \u0628\u0631\u0627\u06cc Outbox \u0647\u0645 \u0627\u0632 \u0627\u0645\u06a9\u0627\u0646\u0627\u062a \u062f\u0631\u0648\u0646\u06cc \u062e\u0648\u0628\u06cc \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631\u0647 \u06a9\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0627\u0634 \u0647\u0645 \u0633\u0627\u062f\u0647 \u0648 \u0633\u0631\u0631\u0627\u0633\u062a\u0647. \u0648 \u0628\u0631\u0627\u06cc \u062a\u06cc\u0645\u200c\u0647\u0627\u06cc\u06cc \u0647\u0645 \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0646 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u0627\u0632 \u0635\u0641\u0631 \u0628\u0633\u0627\u0632\u0646\u060c \u06af\u0632\u06cc\u0646\u0647 \u0642\u0627\u0628\u0644 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/dotnetcore\/CAP\">CAP <\/a>\u0647\u0645 \u0628\u0631\u0627\u06cc NET. \u0627\u0645\u06a9\u0627\u0646\u0627\u062a event bus \u0648 transactional outbox \u0631\u0648 \u0645\u062d\u06cc\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u0648 \u0628\u0631\u0627\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0633\u0628\u06a9\u200c\u062a\u0631 \u0648 \u0633\u0631\u0631\u0627\u0633\u062a\u06cc \u0628\u0627\u0634\u0647. \u062e\u0635\u0648\u0635\u0627 \u06a9\u0647 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0648 \u06a9\u062f\u0628\u0627\u0632\u0647 \u0648 \u0644\u0627\u06cc\u0633\u0646\u0633 MIT \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NServiceBus \u0627\u0632 \u0646\u0638\u0631 enterprise messaging \u0628\u0647 \u062a\u062c\u0631\u0628\u0647 \u0645\u0646\u060c \u067e\u062e\u062a\u0647\u200c\u062a\u0631\u06cc\u0646\u0647\u061bOutbox Pattern \u0631\u0648 \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0627\u0645\u0627 \u0647\u0632\u06cc\u0646\u0647 \u0648 licensing \u0627\u0634 \u0647\u0645 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0646\u0633\u0628\u062a \u062a\u064f\u0646\u062f\u0647!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/JasperFx\/wolverine\">Wolverine <\/a>\u0647\u0645 \u062a\u0648\u06cc \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 NET. \u0628\u0631\u0627\u06cc messaging\u060c command handling \u0648 durable messaging \u0642\u0627\u0628\u0644 \u0628\u0631\u0631\u0633\u06cc\u0647. \u0644\u0627\u06cc\u0633\u0646\u0633 MIT \u0647\u0645 \u062f\u0627\u0631\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Java\u060c \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Eventuate Tram\u060c Axon Framework\u060c Spring Cloud Stream \u0648 Spring Integration \u0628\u0633\u062a\u0647 \u0628\u0647 \u0645\u0639\u0645\u0627\u0631\u06cc \u0648 \u0646\u06cc\u0627\u0632 \u062a\u06cc\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u062e\u0634\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u062d\u0644 \u0628\u0627\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0633\u0637\u062d \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0647\u0645 \u0628\u0627\u06cc\u062f \u062d\u0648\u0627\u0633\u0645\u0648\u0646 \u0628\u0627\u0634\u0647 \u06a9\u0647 \u062e\u0648\u062f Kafka \u06cc\u0627 RabbitMQ \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc Dual Write Problem \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0631\u0648 \u062d\u0644 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646. \u0647\u0646\u0648\u0632 \u0628\u0647 Outbox \u06cc\u0627 \u06cc\u0647 \u0637\u0631\u0627\u062d\u06cc \u0645\u0639\u0627\u062f\u0644 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Poison Message\u060c Retry \u0648 Dead Letter<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u0647 \u062e\u0637\u0627\u0647\u0627 \u0645\u0648\u0642\u062a\u06cc \u0646\u06cc\u0633\u062a\u0646! \u06af\u0627\u0647\u06cc broker \u0628\u0631\u0627\u06cc \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a. \u0627\u06cc\u0646 \u06cc\u06a9 \u062e\u0637\u0627\u06cc transient \u0627\u0633\u062a \u0648 retry \u0628\u0639\u062f \u0627\u0632 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627\u0647\u0627\u0634 \u0645\u0646\u0637\u0642\u06cc\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u06af\u0627\u0647\u06cc \u067e\u06cc\u0627\u0645 \u0627\u0632 \u0627\u0633\u0627\u0633 \u0645\u0634\u06a9\u0644 \u062f\u0627\u0631\u0647. \u0645\u062b\u0644\u0627 schema \u0622\u0646 \u0627\u06cc\u0631\u0627\u062f \u062f\u0627\u0631\u0647\u061b payload \u0646\u0627\u0642\u0635\u0647\u060c \u06cc\u0627 consumer \u0628\u0647 \u062e\u0627\u0637\u0631 \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631\u06cc (\u0645\u062b\u0644 \u062a\u0627\u0631\u06cc\u062e \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0628\u0639\u062f \u0627\u0632 \u062a\u0627\u0631\u06cc\u062e \u0627\u0633\u062a\u0639\u0641\u0627) \u0647\u0645\u06cc\u0634\u0647 \u062e\u0637\u0627 \u0645\u06cc\u200c\u062f\u0647. \u0628\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627 poison message \u0645\u06cc\u200c\u06af\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0622\u0645\u0627\u062f\u06af\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<br>&#8211; RetryCount<br>&#8211; NextRetryAt<br>&#8211; Exponential Backoff<br>&#8211; Max Retry<br>&#8211; Failed State<br>&#8211; Dead Letter Queue \u06cc\u0627 \u0628\u0647 \u0627\u062e\u062a\u0635\u0627\u0631: DLQ<br>&#8211; Manual Retry<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u06f1\u06f0\u06f0\u06f0 \u0628\u0627\u0631 fail \u0628\u0634\u0647 \u0648 \u0645\u0627 \u0647\u0645\u0686\u0646\u0627\u0646 \u0647\u0631 \u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u06a9\u0646\u06cc\u0645\u060c \u0641\u0642\u0637 \u062f\u0627\u0631\u06cc\u0645 \u0633\u06cc\u0633\u062a\u0645 \u0631\u0627 \u0645\u0634\u063a\u0648\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0634\u06a9\u0644 \u0631\u0648 \u0627\u0646\u06a9\u0627\u0631! \u067e\u0633 \u0628\u0647\u062a\u0631\u0647 \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u0645\u0634\u062e\u0635\u06cc retry\u060c \u067e\u06cc\u0627\u0645 \u0648\u0627\u0631\u062f \u0648\u0636\u0639\u06cc\u062a <code>Failed<\/code> \u06cc\u0627 DLQ \u0628\u0634\u0647 \u0648 alert \u0628\u062f\u06cc\u0645 \u062a\u0627 \u0628\u0631\u0631\u0633\u06cc \u0627\u0646\u0633\u0627\u0646\u06cc \u0627\u0646\u062c\u0627\u0645 \u0628\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Observability \u0648 Monitoring<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Outbox \u0628\u062f\u0648\u0646 monitoring \u062e\u0637\u0631\u0646\u0627\u06a9\u0647! \u0686\u0648\u0646 \u0645\u0645\u06a9\u0646\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0638\u0627\u0647\u0631\u0627 \u0628\u0627\u0644\u0627 \u0628\u0627\u0634\u0647\u060c API\u0647\u0627 \u0647\u0645 \u062c\u0648\u0627\u0628 \u0628\u062f\u0646\u060c \u0627\u0645\u0627 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644 Outbox \u06af\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u0646 \u0648 \u0647\u06cc\u0686\u200c\u06a9\u0633 \u0645\u062a\u0648\u062c\u0647 \u0646\u0634\u0647. \u0686\u0646\u062f \u0645\u062a\u0631\u06cc\u06a9 \u0645\u0647\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Outbox pending message count\nOldest unpublished message age\nOutbox publish failure count\nOutbox retry count\nFailed message count\nAverage publish latency\nInbox duplicate count\nConsumer processing latency\nDead-letter count<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 alert \u0647\u0627\u06cc \u0645\u0641\u06cc\u062f:<br>&#8211; \u0627\u06af\u0631 \u062a\u0639\u062f\u0627\u062f \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc Pending \u0627\u0632 \u06cc\u06a9 \u062d\u062f\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0634\u062f.<br>&#8211; \u0627\u06af\u0631 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631\u06cc\u0646 \u067e\u06cc\u0627\u0645 Pending \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u0686\u0646\u062f \u062f\u0642\u06cc\u0642\u0647 \u06cc\u0627 \u0686\u0646\u062f \u0633\u0627\u0639\u062a \u0628\u0627\u0642\u06cc \u0645\u0648\u0646\u062f.<br>&#8211; \u0627\u06af\u0631 \u062a\u0639\u062f\u0627\u062f Failed message \u0632\u06cc\u0627\u062f \u0634\u062f.<br>&#8211; \u0627\u06af\u0631 duplicate rate \u0646\u0627\u06af\u0647\u0627\u0646 \u0628\u0627\u0644\u0627 \u0631\u0641\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc trace \u06a9\u0631\u062f\u0646 \u062c\u0631\u06cc\u0627\u0646 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0647\u0645 \u0628\u0647\u062a\u0631\u0647 <code>CorrelationId<\/code>\u060c <code>CausationId<\/code> \u0648 <code>TraceId<\/code> \u0631\u0648 \u0628\u0627 \u067e\u06cc\u0627\u0645 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0646\u06cc\u0645. \u0648\u06af\u0631\u0646\u0647 \u062f\u0631 \u0645\u062d\u06cc\u0637 production\u060c \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u06a9\u062c\u0627 \u0634\u0631\u0648\u0639 \u0634\u062f\u0647 \u0648 \u0628\u0647 \u062f\u0633\u062a \u06a9\u062f\u0648\u0645 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0633\u06cc\u062f\u0647\u060c \u0633\u062e\u062a \u0648 \u0632\u0645\u0627\u0646\u200c\u0628\u0631 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Ordering \u067e\u06cc\u0627\u0645\u200c\u0647\u0627<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0631\u062a\u06cc\u0628 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u062a\u0648\u06cc \u0628\u0631\u062e\u06cc \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a\u061b \u0648\u0644\u06cc \u0648\u0642\u062a\u06cc \u0645\u0647\u0645 \u0628\u0627\u0634\u0647\u060c \u062e\u06cc\u0644\u06cc \u0645\u0647\u0645\u0647! \u0645\u062b\u0644\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0633\u0641\u0627\u0631\u0634 \u0645\u0645\u06a9\u0646\u0647 \u0627\u06cc\u0646 event\u0647\u0627 \u0631\u0648 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OrderCreated\nOrderPaid\nOrderShipped\nOrderCancelled<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 consumer \u0627\u06cc\u0646\u200c\u0647\u0627 \u0631\u0648 \u0628\u0627 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0628\u06cc\u0646\u0647\u060c state \u0627\u0634\u062a\u0628\u0627\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u0647 \u0648 \u0647\u0645\u06cc\u0646 \u0645\u06cc\u062a\u0648\u0646\u0647 \u0628\u0627\u0639\u062b \u0628\u0634\u0647 \u062a\u0648\u06cc \u06cc\u06a9 state \u0627\u0634\u062a\u0628\u0627\u0647 \u06af\u06cc\u0631 \u06a9\u0646\u0647 \u0648 \u0645\u062a\u0648\u0642\u0641 \u0634\u0647 \u0686\u0648\u0646 \u0645\u062b\u0644\u0627 \u062f\u0631 \u062d\u0627\u0644\u06cc\u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0631\u062f\u0627\u062e\u062a \u0628\u0631\u0627\u0634\u062a \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u0647 \u0631\u0633\u06cc\u062f\u0647 \u0628\u0647 \u0648\u0636\u0639\u06cc\u062a \u0627\u0631\u0633\u0627\u0644. \u0628\u0631\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0647\u0645 \u06a9\u0646\u062a\u0631\u0644 ordering \u0686\u0646\u062f \u0631\u0648\u0634 \u0631\u0627\u06cc\u062c \u062f\u0627\u0631\u0647:<br><br>&#8211; \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 AggregateId \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 partition key \u062f\u0631 Kafka<br>&#8211; \u062f\u0627\u0634\u062a\u0646 sequence number \u06cc\u0627 version \u062f\u0631 event<br>&#8211; \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u0631\u062a\u06cc\u0628\u06cc \u062f\u0631 \u0633\u0637\u062d \u06cc\u06a9 aggregate<br>&#8211; \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 event\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631<br>&#8211; \u0637\u0631\u0627\u062d\u06cc consumer \u0628\u0631 \u0627\u0633\u0627\u0633 reconciliation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0646\u0628\u0627\u06cc\u062f \u0628\u06cc\u200c\u062f\u0644\u06cc\u0644 \u062f\u0646\u0628\u0627\u0644 ordering \u0633\u0631\u0627\u0633\u0631\u06cc \u062f\u0631 \u06a9\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0631\u06cc\u0645. ordering \u06a9\u0627\u0645\u0644\u060c \u062f\u0631 \u0633\u0637\u062d \u06a9\u0644 \u0633\u06cc\u0633\u062a\u0645\u060c \u0645\u0639\u0645\u0648\u0644\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u06af\u0631\u0648\u0646 \u0648 \u06a9\u0646\u062f\u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u062e\u06cc\u0644\u06cc \u0627\u0632 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627 ordering \u062f\u0631 \u0633\u0637\u062d aggregate \u06a9\u0627\u0641\u06cc\u0647. \u0645\u062b\u0644\u0627 \u062f\u0631 \u0633\u0637\u062d \u06cc\u06a9 <code>OrderId<\/code> \u06cc\u0627 \u06cc\u06a9 <code>EmployeeId<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u067e\u0627\u06a9\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u062f\u0627\u0648\u0644 Outbox \u0648 Inbox \u0628\u0647 \u0645\u0631\u0648\u0631 \u0628\u0632\u0631\u06af \u0645\u06cc\u200c\u0634\u0646\u061b \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0647\u0631 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0645\u06cc\u200c\u062a\u0648\u0646\u0647 \u0628\u06cc\u0646 \u0686\u0646\u062f \u0633\u0627\u0639\u062a \u062a\u0627 \u0686\u0646\u062f \u0645\u0627\u0647 \u0627\u06cc\u0646 \u00ab\u0628\u0632\u0631\u06af \u0634\u062f\u0646\u00bb \u0637\u0648\u0644 \u0628\u06a9\u0634\u0647. \u0627\u06af\u0631 retention policy \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0647\u0645\u06cc\u0646 \u062c\u062f\u0648\u0644\u200c\u0647\u0627\u06cc \u06a9\u0645\u06a9\u06cc \u0645\u06cc\u200c\u062a\u0648\u0646\u0646 \u0631\u0648\u06cc performance \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0627\u062b\u0631 \u0645\u0646\u0641\u06cc \u0628\u06af\u0630\u0627\u0631\u0646 \u06cc\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u06a9\u0644\u06cc\u200c\u062a\u0631\u060c \u0645\u0634\u06a9\u0644 \u06cc\u0627 \u0647\u0632\u06cc\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648 \u0628\u0647\u200c\u0648\u062c\u0648\u062f \u0628\u06cc\u0627\u0631\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632 audit \u0648 compliance\u060c \u0645\u06cc\u200c\u062a\u0648\u0646\u06cc\u0645 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627\u06cc \u0642\u062f\u06cc\u0645\u06cc \u0631\u0648 \u062d\u0630\u0641 \u06cc\u0627 \u0622\u0631\u0634\u06cc\u0648 \u06a9\u0646\u06cc\u0645.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627:<br>&#8211; \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc Published \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0632 \u06f3\u06f0 \u0631\u0648\u0632 \u062d\u0630\u0641 \u06cc\u0627 \u0622\u0631\u0634\u06cc\u0648 \u0628\u0634\u0646.<br>&#8211; Inbox records \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 \u0627\u0632 \u06f9\u06f0 \u0631\u0648\u0632 \u062d\u0630\u0641 \u06cc\u0627 \u0622\u0631\u0634\u06cc\u0648 \u0628\u0634\u0646.<br>&#8211; Failed messages \u062a\u0627 \u0632\u0645\u0627\u0646 \u0628\u0631\u0631\u0633\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0628\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0644\u0628\u062a\u0647 \u0639\u062f\u062f\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u06f2\u06f4 \u0633\u0627\u0639\u062a\u060c \u06f3\u06f0 \u0631\u0648\u0632 \u06cc\u0627 \u06f9\u06f0 \u0631\u0648\u0632 \u0646\u0633\u062e\u0647 \u0639\u0645\u0648\u0645\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. \u0628\u0627\u06cc\u062f \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u06cc\u0627\u0632 business\u060c \u0627\u0645\u06a9\u0627\u0646 replay\u060c \u0627\u0644\u0632\u0627\u0645\u0627\u062a audit \u0648 \u062d\u062c\u0645 \u0633\u06cc\u0633\u062a\u0645 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Outbox \u0628\u0627 Event Sourcing \u0686\u0647 \u0641\u0631\u0642\u06cc \u062f\u0627\u0631\u0647\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u06af\u0627\u0647\u06cc Outbox \u0628\u0627 Event Sourcing \u0627\u0634\u062a\u0628\u0627\u0647 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0647. \u062a\u0648\u06cc Outbox\u060c \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0639\u0645\u0644\u06cc\u0627\u062a\u06cc \u0647\u0646\u0648\u0632 \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc state \u0627\u0633\u062a. \u0645\u062b\u0644\u0627 \u062c\u062f\u0648\u0644 Orders \u06cc\u0627 Payments. \u062c\u062f\u0648\u0644 Outbox \u0641\u0642\u0637 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f integration event\u0647\u0627 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f publish \u0628\u0634\u0646.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u062a\u0648\u06cc Event Sourcing\u060c \u062e\u0648\u062f event\u0647\u0627 \u0645\u0646\u0628\u0639 \u0627\u0635\u0644\u06cc \u062d\u0642\u0627\u06cc\u0642 \u0647\u0633\u062a\u0646 \u0648 state \u0641\u0639\u0644\u06cc \u0627\u0632 replay \u06a9\u0631\u062f\u0646 event\u0647\u0627 \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-10-1024x609.png\" alt=\"\" class=\"wp-image-1378\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-10-1024x609.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-10-300x178.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-10-768x457.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-10.png 1534w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0633 \u0647\u0631 Outbox \u0627\u06cc Event Sourcing \u0646\u06cc\u0633\u062a. Outbox \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc reliability \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0634\u0627\u0631 \u067e\u06cc\u0627\u0645\u0647. Event Sourcing \u06cc\u06a9 \u0645\u062f\u0644 \u0645\u062a\u0641\u0627\u0648\u062a \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 state \u0633\u06cc\u0633\u062a\u0645.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Outbox \u0648 Inbox \u0686\u0647 \u0646\u0633\u0628\u062a\u06cc \u0628\u0627 Saga \u062f\u0627\u0631\u0646\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Saga \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06cc\u06a9 \u0641\u0631\u0627\u06cc\u0646\u062f \u0686\u0646\u062f\u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u0628\u06cc\u0646 \u0686\u0646\u062f \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0644\u0627:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create Order\nReserve Inventory\nCapture Payment\nConfirm Order\nSend Notification<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Outbox \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 event\u0647\u0627\u06cc \u0647\u0631 \u0645\u0631\u062d\u0644\u0647 \u06af\u0645 \u0646\u0634\u0646. Inbox \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0647 \u062a\u0627 \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u0631\u0648 \u0627\u0645\u0646 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Saga \u0647\u0645 \u06a9\u0644 \u0641\u0631\u0627\u06cc\u0646\u062f business \u0631\u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0647\u060c \u0686\u0647 \u0628\u0627 choreography \u0648 \u0686\u0647 \u0628\u0627 orchestration.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"338\" src=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-1024x338.png\" alt=\"\" class=\"wp-image-1379\" srcset=\"https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-1024x338.png 1024w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-300x99.png 300w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-768x254.png 768w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-1536x507.png 1536w, https:\/\/mesbahi.net\/fa\/wp-content\/uploads\/sites\/3\/2026\/06\/image-11-2048x676.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 \u0632\u0628\u0648\u0646 \u0633\u0627\u062f\u0647:<br>&#8211; <strong>Outbox<\/strong>: \u067e\u06cc\u0627\u0645 \u0631\u0627 \u06af\u0645 \u0646\u06a9\u0646.<br>&#8211; <strong>Inbox<\/strong>: \u067e\u06cc\u0627\u0645 \u062a\u06a9\u0631\u0627\u0631\u06cc \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062b\u0631 \u0646\u062f\u0647.<br>&#8211; <strong>Saga<\/strong>: \u06a9\u0644 \u0641\u0631\u0627\u06cc\u0646\u062f \u0686\u0646\u062f\u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0648\u0627\u0642\u0639\u0627 \u0628\u0647 Inbox \u0648 Outbox \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 event \u0634\u0645\u0627 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc telemetry \u06cc\u0627 log \u063a\u06cc\u0631\u062d\u06cc\u0627\u062a\u06cc\u0647\u060c \u0634\u0627\u06cc\u062f Outbox \u0627\u0631\u0632\u0634 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0627\u0636\u0627\u0641\u0647 \u0631\u0648 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0627 \u0627\u06af\u0631 event \u0628\u0627\u0639\u062b \u06cc\u06a9 \u062a\u0635\u0645\u06cc\u0645 \u06cc\u0627 side effect \u0645\u0647\u0645 \u062a\u0648\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u0634\u0647\u060c \u0628\u0647\u062a\u0631\u0647 \u062a\u0627 \u0645\u0648\u0636\u0648\u0639 \u0631\u0648 \u062c\u062f\u06cc \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c\u06cc \u06a9\u0647 Outbox \u0645\u0639\u0645\u0648\u0644\u0627 \u0628\u0631\u0627\u0634\u0648\u0646 \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u0628\u0647 \u0634\u0645\u0627\u0631 \u0645\u06cc\u0627\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OrderCreated<\/li>\n\n\n\n<li>PaymentCaptured<\/li>\n\n\n\n<li>InvoiceGenerated ShipmentRequested EmployeeTerminated<\/li>\n\n\n\n<li>LeaveSubmitted<\/li>\n\n\n\n<li>UserRegistered<\/li>\n\n\n\n<li>ContractSigned<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c\u06cc \u06a9\u0647 Inbox \u06cc\u0627 idempotency \u0628\u0631\u0627\u0634\u0648\u0646 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0645\u0647\u0645\u0647:<br>&#8211; \u06a9\u0645 \u06a9\u0631\u062f\u0646 \u0645\u0648\u062c\u0648\u062f\u06cc<br>&#8211; \u0628\u0631\u062f\u0627\u0634\u062a \u0627\u0632 \u06a9\u06cc\u0641 \u067e\u0648\u0644<br>&#8211; \u0633\u0627\u062e\u062a invoice<br>&#8211; \u0627\u0631\u0633\u0627\u0644 notification \u062d\u0633\u0627\u0633<br>&#8211; \u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u06a9\u0627\u0631\u0645\u0646\u062f<br>&#8211; \u0642\u0637\u0639 \u06cc\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc<br>&#8211; \u062b\u0628\u062a payroll adjustment<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0627\u0639\u062f\u0647 \u0633\u0627\u062f\u0647 \u0627\u06cc\u0646\u0647: \u0627\u06af\u0631 \u06af\u0645 \u0634\u062f\u0646 \u067e\u06cc\u0627\u0645 \u0628\u0631\u0627\u06cc business \u0645\u0647\u0645\u0647\u060c Outbox \u0644\u0627\u0632\u0645\u0647. \u0627\u06af\u0631 \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u06a9\u0631\u0627\u0631\u06cc \u067e\u06cc\u0627\u0645 \u062e\u0637\u0631\u0646\u0627\u06a9\u0647\u060c Inbox \u06cc\u0627 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 idempotency \u0644\u0627\u0632\u0645 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Inbox \u0648 Outbox Pattern \u062c\u0632\u0648 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646 \u06a9\u0647 \u0634\u0627\u06cc\u062f \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0648\u0686\u06cc\u06a9 \u0627\u0648\u0644\u0634 \u06a9\u0645\u06cc \u0627\u0636\u0627\u0641\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u0646\u060c \u0627\u0645\u0627 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u062e\u06cc\u0644\u06cc \u0632\u0648\u062f \u0636\u0631\u0648\u0631\u062a\u0634\u0648\u0646 \u0645\u0634\u062e\u0635 \u0645\u06cc\u200c\u0634\u0647.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06cc\u06a9 application \u0646\u062f\u0627\u0631\u06cc\u0645\u060c \u0648\u0642\u062a\u06cc \u0686\u0646\u062f \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627 \u0647\u0645 \u062d\u0631\u0641 \u0645\u06cc\u200c\u0632\u0646\u0646\u060c \u0648\u0642\u062a\u06cc \u067e\u06cc\u0627\u0645\u200c\u0647\u0627 \u0628\u0627\u0639\u062b \u062a\u0635\u0645\u06cc\u0645\u200c\u0647\u0627\u06cc \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631\u06cc \u0645\u06cc\u200c\u0634\u0646\u060c \u062f\u06cc\u06af\u0647 \u0646\u0645\u06cc\u200c\u0634\u0647 \u0641\u0642\u0637 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631 \u0628\u0648\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062f\u0631\u0633\u062a \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0647.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0637\u0631\u0627\u062d\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u060c \u062f\u0631 \u06a9\u0646\u0627\u0631 \u062a\u0645\u0627\u0645 \u0645\u0632\u0627\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0647\u060c \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062c\u062f\u06cc \u0647\u0645 \u0628\u0627 \u062e\u0648\u062f\u0634 \u0645\u06cc\u0627\u0631\u0647: \u062d\u0641\u0638 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627. \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062f\u0647 \u0648 \u0633\u0646\u062a\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06cc\u06a9 transaction \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0648 \u0647\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06cc\u0627 \u0628\u0627 \u0647\u0645 commit \u0645\u06cc\u200c\u0634\u0646\u060c \u06cc\u0627 \u0647\u0645\u0647 \u0628\u0627 \u0647\u0645 rollback \u0645\u06cc\u200c\u0634\u0646 \u0648 \u062c\u0627\u06cc &#8230; <a title=\"\u0645\u0631\u0648\u0631 \u0627\u0644\u06af\u0648\u06cc outbox\/inbox\" class=\"read-more\" href=\"https:\/\/mesbahi.net\/fa\/blog\/1405\/03\/30\/inbox-outbox-patterns-overview\/\" aria-label=\"\u062f\u0631\u0628\u0627\u0631\u06c0 \u0645\u0631\u0648\u0631 \u0627\u0644\u06af\u0648\u06cc outbox\/inbox \u0628\u06cc\u0634\u062a\u0631 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f\">\u0627\u062f\u0627\u0645\u0647<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[7,79],"tags":[104,103,88,42,105],"class_list":["post-1358","post","type-post","status-publish","format-standard","hentry","category-technical","category-79","tag-inbox-outbox-pattern","tag-microservice","tag-software-architecture","tag-software-engineering","tag-system-design"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"\u0627\u0645\u06cc\u0646 \u0645\u0635\u0628\u0627\u062d\u06cc","author_link":"https:\/\/mesbahi.net\/fa\/blog\/author\/amin\/"},"uagb_comment_info":2,"uagb_excerpt":"\u0637\u0631\u0627\u062d\u06cc \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639\u200c\u0634\u062f\u0647 \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u060c \u062f\u0631 \u06a9\u0646\u0627\u0631 \u062a\u0645\u0627\u0645 \u0645\u0632\u0627\u06cc\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0647\u060c \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u062c\u062f\u06cc \u0647\u0645 \u0628\u0627 \u062e\u0648\u062f\u0634 \u0645\u06cc\u0627\u0631\u0647: \u062d\u0641\u0638 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627. \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0633\u0627\u062f\u0647 \u0648 \u0633\u0646\u062a\u06cc\u060c \u0645\u0639\u0645\u0648\u0644\u0627 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0648 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u062f\u06cc\u062a\u0627\u0628\u06cc\u0633 \u0648 \u06cc\u06a9 transaction \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647. \u0648 \u0647\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06cc\u0627 \u0628\u0627 \u0647\u0645 commit \u0645\u06cc\u200c\u0634\u0646\u060c \u06cc\u0627 \u0647\u0645\u0647 \u0628\u0627 \u0647\u0645 rollback \u0645\u06cc\u200c\u0634\u0646 \u0648 \u062c\u0627\u06cc&hellip;","_links":{"self":[{"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/posts\/1358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/comments?post=1358"}],"version-history":[{"count":10,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/posts\/1358\/revisions"}],"predecessor-version":[{"id":1380,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/posts\/1358\/revisions\/1380"}],"wp:attachment":[{"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/media?parent=1358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/categories?post=1358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mesbahi.net\/fa\/wp-json\/wp\/v2\/tags?post=1358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}