buz 2.15.2__tar.gz → 2.15.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. {buz-2.15.2 → buz-2.15.4}/PKG-INFO +1 -1
  2. {buz-2.15.2 → buz-2.15.4}/pyproject.toml +1 -1
  3. buz-2.15.4/src/buz/event/infrastructure/buz_kafka/exceptions/max_consumer_retry_exception.py +8 -0
  4. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/kafka_event_async_subscriber_executor.py +33 -3
  5. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/kafka_event_sync_subscriber_executor.py +35 -5
  6. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/consume_retrier.py +4 -0
  7. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/consumed_event_retry_repository.py +4 -0
  8. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/max_retries_consume_retrier.py +3 -0
  9. {buz-2.15.2 → buz-2.15.4}/LICENSE +0 -0
  10. {buz-2.15.2 → buz-2.15.4}/README.md +0 -0
  11. {buz-2.15.2 → buz-2.15.4}/src/buz/__init__.py +0 -0
  12. {buz-2.15.2 → buz-2.15.4}/src/buz/command/__init__.py +0 -0
  13. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/__init__.py +0 -0
  14. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/base_command_handler.py +0 -0
  15. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/command_bus.py +0 -0
  16. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/command_handler.py +0 -0
  17. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/middleware/__init__.py +0 -0
  18. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/middleware/base_handle_middleware.py +0 -0
  19. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/middleware/handle_middleware.py +0 -0
  20. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  21. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/self_process/__init__.py +0 -0
  22. {buz-2.15.2 → buz-2.15.4}/src/buz/command/asynchronous/self_process/self_process_command_bus.py +0 -0
  23. {buz-2.15.2 → buz-2.15.4}/src/buz/command/command.py +0 -0
  24. {buz-2.15.2 → buz-2.15.4}/src/buz/command/more_than_one_command_handler_related_exception.py +0 -0
  25. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/__init__.py +0 -0
  26. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/base_command_handler.py +0 -0
  27. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/command_bus.py +0 -0
  28. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/command_handler.py +0 -0
  29. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/middleware/__init__.py +0 -0
  30. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/middleware/base_handle_middleware.py +0 -0
  31. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/middleware/handle_middleware.py +0 -0
  32. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  33. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/self_process/__init__.py +0 -0
  34. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/self_process/self_process_command_bus.py +0 -0
  35. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/synced_async/__init__.py +0 -0
  36. {buz-2.15.2 → buz-2.15.4}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py +0 -0
  37. {buz-2.15.2 → buz-2.15.4}/src/buz/event/__init__.py +0 -0
  38. {buz-2.15.2 → buz-2.15.4}/src/buz/event/async_consumer.py +0 -0
  39. {buz-2.15.2 → buz-2.15.4}/src/buz/event/async_event_bus.py +0 -0
  40. {buz-2.15.2 → buz-2.15.4}/src/buz/event/async_subscriber.py +0 -0
  41. {buz-2.15.2 → buz-2.15.4}/src/buz/event/async_worker.py +0 -0
  42. {buz-2.15.2 → buz-2.15.4}/src/buz/event/base_async_subscriber.py +0 -0
  43. {buz-2.15.2 → buz-2.15.4}/src/buz/event/base_subscriber.py +0 -0
  44. {buz-2.15.2 → buz-2.15.4}/src/buz/event/consumer.py +0 -0
  45. {buz-2.15.2 → buz-2.15.4}/src/buz/event/dead_letter_queue/__init__.py +0 -0
  46. {buz-2.15.2 → buz-2.15.4}/src/buz/event/dead_letter_queue/dlq_criteria.py +0 -0
  47. {buz-2.15.2 → buz-2.15.4}/src/buz/event/dead_letter_queue/dlq_record.py +0 -0
  48. {buz-2.15.2 → buz-2.15.4}/src/buz/event/dead_letter_queue/dlq_repository.py +0 -0
  49. {buz-2.15.2 → buz-2.15.4}/src/buz/event/event.py +0 -0
  50. {buz-2.15.2 → buz-2.15.4}/src/buz/event/event_bus.py +0 -0
  51. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/__init__.py +0 -0
  52. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/event_not_published_exception.py +0 -0
  53. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/event_restore_exception.py +0 -0
  54. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/subscribers_not_found_exception.py +0 -0
  55. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/term_signal_interruption_exception.py +0 -0
  56. {buz-2.15.2 → buz-2.15.4}/src/buz/event/exceptions/worker_execution_exception.py +0 -0
  57. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/__init__.py +0 -0
  58. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/__init__.py +0 -0
  59. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py +0 -0
  60. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py +0 -0
  61. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py +0 -0
  62. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py +0 -0
  63. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py +0 -0
  64. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py +0 -0
  65. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/consume_strategy/consume_strategy.py +0 -0
  66. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/consume_strategy/kafka_on_fail_strategy.py +0 -0
  67. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/consume_strategy/topic_and_subscription_group_per_subscriber_kafka_consumer_strategy.py +0 -0
  68. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/exceptions/__init__.py +0 -0
  69. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/exceptions/kafka_event_bus_config_not_valid_exception.py +0 -0
  70. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py +0 -0
  71. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py +0 -0
  72. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py +0 -0
  73. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/publish_strategy/publish_strategy.py +0 -0
  74. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/buz_kafka/publish_strategy/topic_per_event_kafka_publish_strategy.py +0 -0
  75. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/__init__.py +0 -0
  76. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/allowed_kombu_serializer.py +0 -0
  77. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/consume_strategy/__init__.py +0 -0
  78. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py +0 -0
  79. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/consume_strategy/queue_per_subscriber_consume_strategy.py +0 -0
  80. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/kombu_consumer.py +0 -0
  81. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/kombu_event_bus.py +0 -0
  82. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/publish_strategy/__init__.py +0 -0
  83. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/publish_strategy/fanout_exchange_per_event_publish_strategy.py +0 -0
  84. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py +0 -0
  85. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/retry_strategy/__init__.py +0 -0
  86. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py +0 -0
  87. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/kombu/retry_strategy/simple_publish_retry_policy.py +0 -0
  88. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/models/consuming_task.py +0 -0
  89. {buz-2.15.2 → buz-2.15.4}/src/buz/event/infrastructure/queue/__init__.py +0 -0
  90. {buz-2.15.2 → buz-2.15.4}/src/buz/event/meta_base_subscriber.py +0 -0
  91. {buz-2.15.2 → buz-2.15.4}/src/buz/event/meta_subscriber.py +0 -0
  92. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/__init__.py +0 -0
  93. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/async_consume_middleware.py +0 -0
  94. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py +0 -0
  95. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/async_publish_middleware.py +0 -0
  96. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py +0 -0
  97. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/base_async_consume_middleware.py +0 -0
  98. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/base_consume_middleware.py +0 -0
  99. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/base_publish_middleware.py +0 -0
  100. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/consume_middleware.py +0 -0
  101. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/consume_middleware_chain_resolver.py +0 -0
  102. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/exceptions/__init__.py +0 -0
  103. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py +0 -0
  104. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/publish_middleware.py +0 -0
  105. {buz-2.15.2 → buz-2.15.4}/src/buz/event/middleware/publish_middleware_chain_resolver.py +0 -0
  106. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/__init__.py +0 -0
  107. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/__init__.py +0 -0
  108. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py +0 -0
  109. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/async_self_process_execution_strategy.py +0 -0
  110. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/cyclic_iterator_execution_strategy.py +0 -0
  111. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/execution_strategy.py +0 -0
  112. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/execution_strategy/self_process_execution_strategy.py +0 -0
  113. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/__init__.py +0 -0
  114. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/consumed_event_retry.py +0 -0
  115. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/max_retries_negative_exception.py +0 -0
  116. {buz-2.15.2 → buz-2.15.4}/src/buz/event/strategies/retry/reject_callback.py +0 -0
  117. {buz-2.15.2 → buz-2.15.4}/src/buz/event/subscriber.py +0 -0
  118. {buz-2.15.2 → buz-2.15.4}/src/buz/event/sync/__init__.py +0 -0
  119. {buz-2.15.2 → buz-2.15.4}/src/buz/event/sync/sync_event_bus.py +0 -0
  120. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/__init__.py +0 -0
  121. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py +0 -0
  122. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/fqn_to_event_mapper.py +0 -0
  123. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_criteria/__init__.py +0 -0
  124. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_criteria/deliverable_records_outbox_criteria_factory.py +0 -0
  125. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py +0 -0
  126. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria_factory.py +0 -0
  127. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_criteria/outbox_sorting_criteria.py +0 -0
  128. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record.py +0 -0
  129. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_finder/__init__.py +0 -0
  130. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_finder/outbox_record_stream_finder.py +0 -0
  131. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_finder/polling_outbox_record_stream_finder.py +0 -0
  132. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_to_event_translator.py +0 -0
  133. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/__init__.py +0 -0
  134. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/abstract_outbox_record_validator.py +0 -0
  135. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_size_not_allowed_exception.py +0 -0
  136. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation_exception.py +0 -0
  137. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py +0 -0
  138. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py +0 -0
  139. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/outbox_repository.py +0 -0
  140. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/transactional_outbox_event_bus.py +0 -0
  141. {buz-2.15.2 → buz-2.15.4}/src/buz/event/transactional_outbox/transactional_outbox_worker.py +0 -0
  142. {buz-2.15.2 → buz-2.15.4}/src/buz/event/worker.py +0 -0
  143. {buz-2.15.2 → buz-2.15.4}/src/buz/handler.py +0 -0
  144. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/__init__.py +0 -0
  145. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/__init__.py +0 -0
  146. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/not_all_partition_assigned_exception.py +0 -0
  147. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/not_valid_kafka_message_exception.py +0 -0
  148. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/not_valid_partition_number_exception.py +0 -0
  149. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/topic_already_created_exception.py +0 -0
  150. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/exceptions/topic_not_found_exception.py +0 -0
  151. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/__init__.py +0 -0
  152. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/auto_create_topic_configuration.py +0 -0
  153. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/consumer_initial_offset_position.py +0 -0
  154. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/create_kafka_topic.py +0 -0
  155. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_connection_config.py +0 -0
  156. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_connection_credentials.py +0 -0
  157. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_connection_plain_text_credentials.py +0 -0
  158. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_connection_sasl_credentials.py +0 -0
  159. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_consumer_record.py +0 -0
  160. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_poll_record.py +0 -0
  161. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_supported_compression_type.py +0 -0
  162. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_supported_sasl_mechanisms.py +0 -0
  163. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/models/kafka_supported_security_protocols.py +0 -0
  164. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/services/__init__.py +0 -0
  165. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/services/async_kafka_producer.py +0 -0
  166. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/services/kafka_admin_client.py +0 -0
  167. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/services/kafka_admin_test_client.py +0 -0
  168. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/domain/services/kafka_producer.py +0 -0
  169. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/__init__.py +0 -0
  170. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/__init__.py +0 -0
  171. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py +0 -0
  172. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/aiokafka_producer.py +0 -0
  173. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/rebalance/__init__.py +0 -0
  174. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py +0 -0
  175. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/translators/__init__.py +0 -0
  176. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/aiokafka/translators/consumer_initial_offset_position_translator.py +0 -0
  177. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/cdc/__init__.py +0 -0
  178. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/cdc/cdc_message.py +0 -0
  179. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/cdc/cdc_payload.py +0 -0
  180. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/cdc/cdc_schema.py +0 -0
  181. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/__init__.py +0 -0
  182. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/byte_deserializer.py +0 -0
  183. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/bytes_to_message_deserializer.py +0 -0
  184. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/implementations/__init__.py +0 -0
  185. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_event_deserializer.py +0 -0
  186. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/not_valid_cdc_message_exception.py +0 -0
  187. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/implementations/json_byte_deserializer.py +0 -0
  188. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/deserializers/implementations/json_bytes_to_message_deserializer.py +0 -0
  189. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/interfaces/__init__.py +0 -0
  190. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/interfaces/async_connection_manager.py +0 -0
  191. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/interfaces/connection_manager.py +0 -0
  192. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/__init__.py +0 -0
  193. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/exception/consumer_interrupted_exception.py +0 -0
  194. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_client.py +0 -0
  195. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_test_client.py +0 -0
  196. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/kafka_python_producer.py +0 -0
  197. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/translators/__init__.py +0 -0
  198. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/kafka_python/translators/consumer_initial_offset_position_translator.py +0 -0
  199. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/serializers/byte_serializer.py +0 -0
  200. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/serializers/implementations/cdc_record_bytes_to_event_serializer.py +0 -0
  201. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/serializers/implementations/json_byte_serializer.py +0 -0
  202. {buz-2.15.2 → buz-2.15.4}/src/buz/kafka/infrastructure/serializers/kafka_header_serializer.py +0 -0
  203. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/__init__.py +0 -0
  204. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/handler_fqn_not_found_exception.py +0 -0
  205. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/locator.py +0 -0
  206. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/message_fqn_not_found_exception.py +0 -0
  207. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/pypendency/__init__.py +0 -0
  208. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/pypendency/container_locator.py +0 -0
  209. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/pypendency/container_locator_resolution_configuration.py +0 -0
  210. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/pypendency/handler_not_found_exception.py +0 -0
  211. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/pypendency/handler_not_registered_exception.py +0 -0
  212. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/sync/__init__.py +0 -0
  213. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/sync/handler_already_registered_exception.py +0 -0
  214. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/sync/handler_not_registered_exception.py +0 -0
  215. {buz-2.15.2 → buz-2.15.4}/src/buz/locator/sync/instance_locator.py +0 -0
  216. {buz-2.15.2 → buz-2.15.4}/src/buz/message.py +0 -0
  217. {buz-2.15.2 → buz-2.15.4}/src/buz/middleware/__init__.py +0 -0
  218. {buz-2.15.2 → buz-2.15.4}/src/buz/middleware/middleware.py +0 -0
  219. {buz-2.15.2 → buz-2.15.4}/src/buz/middleware/middleware_chain_builder.py +0 -0
  220. {buz-2.15.2 → buz-2.15.4}/src/buz/py.typed +0 -0
  221. {buz-2.15.2 → buz-2.15.4}/src/buz/query/__init__.py +0 -0
  222. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/__init__.py +0 -0
  223. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/base_query_handler.py +0 -0
  224. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/middleware/__init__.py +0 -0
  225. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/middleware/base_handle_middleware.py +0 -0
  226. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/middleware/handle_middleware.py +0 -0
  227. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  228. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/query_bus.py +0 -0
  229. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/query_handler.py +0 -0
  230. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/self_process/__init__.py +0 -0
  231. {buz-2.15.2 → buz-2.15.4}/src/buz/query/asynchronous/self_process/self_process_query_bus.py +0 -0
  232. {buz-2.15.2 → buz-2.15.4}/src/buz/query/more_than_one_query_handler_related_exception.py +0 -0
  233. {buz-2.15.2 → buz-2.15.4}/src/buz/query/query.py +0 -0
  234. {buz-2.15.2 → buz-2.15.4}/src/buz/query/query_response.py +0 -0
  235. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/__init__.py +0 -0
  236. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/base_query_handler.py +0 -0
  237. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/middleware/__init__.py +0 -0
  238. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/middleware/base_handle_middleware.py +0 -0
  239. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/middleware/handle_middleware.py +0 -0
  240. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  241. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/query_bus.py +0 -0
  242. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/query_handler.py +0 -0
  243. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/self_process/__init__.py +0 -0
  244. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/self_process/self_process_query_bus.py +0 -0
  245. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/synced_async/__init__.py +0 -0
  246. {buz-2.15.2 → buz-2.15.4}/src/buz/query/synchronous/synced_async/synced_async_query_bus.py +0 -0
  247. {buz-2.15.2 → buz-2.15.4}/src/buz/queue/__init__.py +0 -0
  248. {buz-2.15.2 → buz-2.15.4}/src/buz/queue/in_memory/in_memory_multiqueue_repository.py +0 -0
  249. {buz-2.15.2 → buz-2.15.4}/src/buz/queue/in_memory/in_memory_queue_repository.py +0 -0
  250. {buz-2.15.2 → buz-2.15.4}/src/buz/queue/multiqueue_repository.py +0 -0
  251. {buz-2.15.2 → buz-2.15.4}/src/buz/queue/queue_repository.py +0 -0
  252. {buz-2.15.2 → buz-2.15.4}/src/buz/serializer/message_to_bytes_serializer.py +0 -0
  253. {buz-2.15.2 → buz-2.15.4}/src/buz/serializer/message_to_json_bytes_serializer.py +0 -0
  254. {buz-2.15.2 → buz-2.15.4}/src/buz/wrapper/__init__.py +0 -0
  255. {buz-2.15.2 → buz-2.15.4}/src/buz/wrapper/async_to_sync.py +0 -0
  256. {buz-2.15.2 → buz-2.15.4}/src/buz/wrapper/event_loop.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buz
3
- Version: 2.15.2
3
+ Version: 2.15.4
4
4
  Summary: Buz is a set of light, simple and extensible implementations of event, command and query buses.
5
5
  License: MIT
6
6
  Author: Luis Pintado Lozano
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "buz"
3
- version = "2.15.2"
3
+ version = "2.15.4"
4
4
  description = "Buz is a set of light, simple and extensible implementations of event, command and query buses."
5
5
  readme = "README.md"
6
6
  authors = ["Luis Pintado Lozano <luis.pintado.lozano@gmail.com>", "Gerardo Parra <gprauxiliar@gmail.com>"]
@@ -0,0 +1,8 @@
1
+ class MaxConsumerRetryException(Exception):
2
+ def __init__(
3
+ self,
4
+ *,
5
+ event_id: str,
6
+ subscriber_fqn: str,
7
+ ) -> None:
8
+ super().__init__(f"Max retries reached, discarding event {event_id} for subscriber {subscriber_fqn}")
@@ -5,6 +5,7 @@ from typing import Optional, Sequence, cast
5
5
  from buz.event import Event
6
6
  from buz.event.async_subscriber import AsyncSubscriber
7
7
  from buz.event.infrastructure.buz_kafka.consume_strategy.kafka_on_fail_strategy import KafkaOnFailStrategy
8
+ from buz.event.infrastructure.buz_kafka.exceptions.max_consumer_retry_exception import MaxConsumerRetryException
8
9
  from buz.event.infrastructure.buz_kafka.exceptions.retry_exception import ConsumerRetryException
9
10
  from buz.event.infrastructure.buz_kafka.kafka_event_subscriber_executor import KafkaEventSubscriberExecutor
10
11
  from buz.event.middleware.async_consume_middleware import AsyncConsumeMiddleware
@@ -78,12 +79,36 @@ class KafkaEventAsyncSubscriberExecutor(KafkaEventSubscriberExecutor):
78
79
  )
79
80
 
80
81
  async def __perform_consume(self, event: Event, subscriber: AsyncSubscriber) -> None:
81
- should_retry = True
82
82
  number_of_executions = 0
83
+ should_retry = True
84
+
85
+ if self.__consume_retrier is not None:
86
+ should_retry = self.__consume_retrier.should_retry(event, [subscriber])
87
+
88
+ if should_retry is False:
89
+ max_retry_exception = MaxConsumerRetryException(
90
+ event_id=event.id,
91
+ subscriber_fqn=subscriber.fqn(),
92
+ )
93
+
94
+ if self.__on_fail_strategy == KafkaOnFailStrategy.STOP_ON_FAIL:
95
+ raise max_retry_exception
96
+
97
+ self.__logger.warning(
98
+ f"The event {event.id} with the subscriber {subscriber.fqn()} has reach the max number of retries, it will be consumed but not processed"
99
+ )
100
+
101
+ if self.__reject_callback is not None:
102
+ self.__reject_callback.on_reject(event=event, subscribers=[subscriber], exception=max_retry_exception)
103
+
104
+ return
105
+
83
106
  while should_retry is True:
84
107
  try:
108
+ self.__register_retry(event, subscriber)
85
109
  number_of_executions += 1
86
110
  await subscriber.consume(event)
111
+ self.__clean_retry(event, subscriber)
87
112
  return
88
113
  except Exception as exception:
89
114
  if self.__should_retry(event, subscriber) is True:
@@ -95,13 +120,12 @@ class KafkaEventAsyncSubscriberExecutor(KafkaEventSubscriberExecutor):
95
120
  ),
96
121
  exc_info=exception,
97
122
  )
98
- self.__register_retry(event, subscriber)
99
123
  await sleep(self.__seconds_between_retires)
100
124
  continue
101
125
 
102
126
  self.__logger.exception(exception)
103
127
 
104
- if self.__reject_callback:
128
+ if self.__reject_callback is not None:
105
129
  self.__reject_callback.on_reject(event=event, subscribers=[subscriber], exception=exception)
106
130
 
107
131
  if self.__on_fail_strategy == KafkaOnFailStrategy.STOP_ON_FAIL:
@@ -120,3 +144,9 @@ class KafkaEventAsyncSubscriberExecutor(KafkaEventSubscriberExecutor):
120
144
  return None
121
145
 
122
146
  return self.__consume_retrier.register_retry(event, [subscriber])
147
+
148
+ def __clean_retry(self, event: Event, subscriber: AsyncSubscriber) -> None:
149
+ if self.__consume_retrier is None:
150
+ return None
151
+
152
+ return self.__consume_retrier.clean_retries(event, [subscriber])
@@ -4,6 +4,7 @@ import time
4
4
  from typing import Optional, Sequence, cast
5
5
  from buz.event import Event
6
6
  from buz.event.infrastructure.buz_kafka.consume_strategy.kafka_on_fail_strategy import KafkaOnFailStrategy
7
+ from buz.event.infrastructure.buz_kafka.exceptions.max_consumer_retry_exception import MaxConsumerRetryException
7
8
  from buz.event.infrastructure.buz_kafka.exceptions.retry_exception import ConsumerRetryException
8
9
  from buz.event.infrastructure.buz_kafka.kafka_event_subscriber_executor import KafkaEventSubscriberExecutor
9
10
  from buz.event.middleware.consume_middleware import ConsumeMiddleware
@@ -82,30 +83,53 @@ class KafkaEventSyncSubscriberExecutor(KafkaEventSubscriberExecutor):
82
83
  )
83
84
 
84
85
  def __perform_consume(self, event: Event, subscriber: Subscriber) -> None:
86
+ number_of_executions = 0
85
87
  should_retry = True
86
- execution_number = 0
88
+
89
+ if self.__consume_retrier is not None:
90
+ should_retry = self.__consume_retrier.should_retry(event, [subscriber])
91
+
92
+ if should_retry is False:
93
+ max_retry_exception = MaxConsumerRetryException(
94
+ event_id=event.id,
95
+ subscriber_fqn=subscriber.fqn(),
96
+ )
97
+
98
+ if self.__on_fail_strategy == KafkaOnFailStrategy.STOP_ON_FAIL:
99
+ raise max_retry_exception
100
+
101
+ self.__logger.warning(
102
+ f"The event {event.id} with the subscriber {subscriber.fqn()} has reach the max number of retries, it will be consumed but not processed"
103
+ )
104
+
105
+ if self.__reject_callback is not None:
106
+ self.__reject_callback.on_reject(event=event, subscribers=[subscriber], exception=max_retry_exception)
107
+
108
+ return
109
+
87
110
  while should_retry is True:
88
111
  try:
89
- execution_number += 1
112
+ self.__register_retry(event, subscriber)
113
+ number_of_executions += 1
90
114
  subscriber.consume(event)
115
+ self.__clean_retries(event, subscriber)
91
116
  return
92
117
  except Exception as exception:
93
118
  if self.__should_retry(event, subscriber) is True:
94
119
  self.__logger.warning(
95
120
  ConsumerRetryException(
96
- number_of_executions=execution_number,
121
+ number_of_executions=number_of_executions,
97
122
  event_id=event.id,
98
123
  subscriber_fqn=subscriber.fqn(),
99
124
  ),
100
125
  exc_info=exception,
101
126
  )
102
- self.__register_retry(event, subscriber)
103
127
  time.sleep(self.__seconds_between_retires)
104
128
  continue
105
129
 
106
130
  self.__logger.exception(exception)
107
131
 
108
- if self.__reject_callback:
132
+ if self.__reject_callback is not None:
109
133
  self.__reject_callback.on_reject(event=event, subscribers=[subscriber], exception=exception)
110
134
 
111
135
  if self.__on_fail_strategy == KafkaOnFailStrategy.STOP_ON_FAIL:
@@ -124,3 +148,9 @@ class KafkaEventSyncSubscriberExecutor(KafkaEventSubscriberExecutor):
124
148
  return None
125
149
 
126
150
  return self.__consume_retrier.register_retry(event, [subscriber])
151
+
152
+ def __clean_retries(self, event: Event, subscriber: Subscriber) -> None:
153
+ if self.__consume_retrier is None:
154
+ return None
155
+
156
+ return self.__consume_retrier.clean_retries(event, [subscriber])
@@ -12,3 +12,7 @@ class ConsumeRetrier(ABC):
12
12
  @abstractmethod
13
13
  def register_retry(self, event: Event, subscribers: Sequence[MetaSubscriber]) -> None:
14
14
  pass
15
+
16
+ @abstractmethod
17
+ def clean_retries(self, event: Event, subscribers: Sequence[MetaSubscriber]) -> None:
18
+ pass
@@ -17,3 +17,7 @@ class ConsumedEventRetryRepository(ABC):
17
17
  self, event: Event, subscribers: Sequence[MetaSubscriber]
18
18
  ) -> ConsumedEventRetry:
19
19
  pass
20
+
21
+ @abstractmethod
22
+ def clean(self, event: Event, subscribers: Sequence[MetaSubscriber]) -> None:
23
+ pass
@@ -35,3 +35,6 @@ class MaxRetriesConsumeRetrier(ConsumeRetrier):
35
35
  )
36
36
  consumed_event_retry.register_retry()
37
37
  self.__consumed_event_retry_repository.save(consumed_event_retry)
38
+
39
+ def clean_retries(self, event: Event, subscribers: Sequence[MetaSubscriber]) -> None:
40
+ self.__consumed_event_retry_repository.clean(event, subscribers)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes