buz 2.14.2__tar.gz → 2.14.3__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 (251) hide show
  1. {buz-2.14.2 → buz-2.14.3}/PKG-INFO +2 -1
  2. {buz-2.14.2 → buz-2.14.3}/pyproject.toml +2 -1
  3. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/base_buz_aiokafka_async_consumer.py +31 -1
  4. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_async_consumer.py +2 -0
  5. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/buz_aiokafka_multi_threaded_consumer.py +2 -0
  6. {buz-2.14.2 → buz-2.14.3}/LICENSE +0 -0
  7. {buz-2.14.2 → buz-2.14.3}/README.md +0 -0
  8. {buz-2.14.2 → buz-2.14.3}/src/buz/__init__.py +0 -0
  9. {buz-2.14.2 → buz-2.14.3}/src/buz/command/__init__.py +0 -0
  10. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/__init__.py +0 -0
  11. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/base_command_handler.py +0 -0
  12. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/command_bus.py +0 -0
  13. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/command_handler.py +0 -0
  14. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/middleware/__init__.py +0 -0
  15. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/middleware/base_handle_middleware.py +0 -0
  16. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/middleware/handle_middleware.py +0 -0
  17. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  18. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/self_process/__init__.py +0 -0
  19. {buz-2.14.2 → buz-2.14.3}/src/buz/command/asynchronous/self_process/self_process_command_bus.py +0 -0
  20. {buz-2.14.2 → buz-2.14.3}/src/buz/command/command.py +0 -0
  21. {buz-2.14.2 → buz-2.14.3}/src/buz/command/more_than_one_command_handler_related_exception.py +0 -0
  22. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/__init__.py +0 -0
  23. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/base_command_handler.py +0 -0
  24. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/command_bus.py +0 -0
  25. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/command_handler.py +0 -0
  26. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/middleware/__init__.py +0 -0
  27. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/middleware/base_handle_middleware.py +0 -0
  28. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/middleware/handle_middleware.py +0 -0
  29. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  30. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/self_process/__init__.py +0 -0
  31. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/self_process/self_process_command_bus.py +0 -0
  32. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/synced_async/__init__.py +0 -0
  33. {buz-2.14.2 → buz-2.14.3}/src/buz/command/synchronous/synced_async/synced_async_command_bus.py +0 -0
  34. {buz-2.14.2 → buz-2.14.3}/src/buz/event/__init__.py +0 -0
  35. {buz-2.14.2 → buz-2.14.3}/src/buz/event/async_consumer.py +0 -0
  36. {buz-2.14.2 → buz-2.14.3}/src/buz/event/async_event_bus.py +0 -0
  37. {buz-2.14.2 → buz-2.14.3}/src/buz/event/async_subscriber.py +0 -0
  38. {buz-2.14.2 → buz-2.14.3}/src/buz/event/async_worker.py +0 -0
  39. {buz-2.14.2 → buz-2.14.3}/src/buz/event/base_async_subscriber.py +0 -0
  40. {buz-2.14.2 → buz-2.14.3}/src/buz/event/base_subscriber.py +0 -0
  41. {buz-2.14.2 → buz-2.14.3}/src/buz/event/consumer.py +0 -0
  42. {buz-2.14.2 → buz-2.14.3}/src/buz/event/dead_letter_queue/__init__.py +0 -0
  43. {buz-2.14.2 → buz-2.14.3}/src/buz/event/dead_letter_queue/dlq_criteria.py +0 -0
  44. {buz-2.14.2 → buz-2.14.3}/src/buz/event/dead_letter_queue/dlq_record.py +0 -0
  45. {buz-2.14.2 → buz-2.14.3}/src/buz/event/dead_letter_queue/dlq_repository.py +0 -0
  46. {buz-2.14.2 → buz-2.14.3}/src/buz/event/event.py +0 -0
  47. {buz-2.14.2 → buz-2.14.3}/src/buz/event/event_bus.py +0 -0
  48. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/__init__.py +0 -0
  49. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/event_not_published_exception.py +0 -0
  50. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/event_restore_exception.py +0 -0
  51. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/subscribers_not_found_exception.py +0 -0
  52. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/term_signal_interruption_exception.py +0 -0
  53. {buz-2.14.2 → buz-2.14.3}/src/buz/event/exceptions/worker_execution_exception.py +0 -0
  54. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/__init__.py +0 -0
  55. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/__init__.py +0 -0
  56. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/async_buz_kafka_event_bus.py +0 -0
  57. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/buz_kafka_event_bus.py +0 -0
  58. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/consume_strategy/__init__.py +0 -0
  59. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/consume_strategy/consume_strategy.py +0 -0
  60. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/consume_strategy/kafka_on_fail_strategy.py +0 -0
  61. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/consume_strategy/topic_and_subscription_group_per_subscriber_kafka_consumer_strategy.py +0 -0
  62. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/exceptions/__init__.py +0 -0
  63. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/exceptions/kafka_event_bus_config_not_valid_exception.py +0 -0
  64. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/exceptions/retry_exception.py +0 -0
  65. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/kafka_event_async_subscriber_executor.py +0 -0
  66. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/kafka_event_subscriber_executor.py +0 -0
  67. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/kafka_event_sync_subscriber_executor.py +0 -0
  68. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/publish_strategy/__init__.py +0 -0
  69. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/publish_strategy/publish_strategy.py +0 -0
  70. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/buz_kafka/publish_strategy/topic_per_event_kafka_publish_strategy.py +0 -0
  71. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/__init__.py +0 -0
  72. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/allowed_kombu_serializer.py +0 -0
  73. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/consume_strategy/__init__.py +0 -0
  74. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/consume_strategy/consume_strategy.py +0 -0
  75. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/consume_strategy/queue_per_subscriber_consume_strategy.py +0 -0
  76. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/kombu_consumer.py +0 -0
  77. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/kombu_event_bus.py +0 -0
  78. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/publish_strategy/__init__.py +0 -0
  79. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/publish_strategy/fanout_exchange_per_event_publish_strategy.py +0 -0
  80. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/publish_strategy/publish_strategy.py +0 -0
  81. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/retry_strategy/__init__.py +0 -0
  82. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/retry_strategy/publish_retry_policy.py +0 -0
  83. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/kombu/retry_strategy/simple_publish_retry_policy.py +0 -0
  84. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/models/consuming_task.py +0 -0
  85. {buz-2.14.2 → buz-2.14.3}/src/buz/event/infrastructure/queue/__init__.py +0 -0
  86. {buz-2.14.2 → buz-2.14.3}/src/buz/event/meta_base_subscriber.py +0 -0
  87. {buz-2.14.2 → buz-2.14.3}/src/buz/event/meta_subscriber.py +0 -0
  88. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/__init__.py +0 -0
  89. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/async_consume_middleware.py +0 -0
  90. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/async_consume_middleware_chain_resolver.py +0 -0
  91. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/async_publish_middleware.py +0 -0
  92. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/async_publish_middleware_chain_resolver.py +0 -0
  93. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/base_consume_middleware.py +0 -0
  94. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/base_publish_middleware.py +0 -0
  95. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/consume_middleware.py +0 -0
  96. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/consume_middleware_chain_resolver.py +0 -0
  97. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/exceptions/__init__.py +0 -0
  98. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/exceptions/event_already_in_progress_exception.py +0 -0
  99. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/publish_middleware.py +0 -0
  100. {buz-2.14.2 → buz-2.14.3}/src/buz/event/middleware/publish_middleware_chain_resolver.py +0 -0
  101. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/__init__.py +0 -0
  102. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/__init__.py +0 -0
  103. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/async_execution_strategy.py +0 -0
  104. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/async_self_process_execution_strategy.py +0 -0
  105. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/cyclic_iterator_execution_strategy.py +0 -0
  106. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/execution_strategy.py +0 -0
  107. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/execution_strategy/self_process_execution_strategy.py +0 -0
  108. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/__init__.py +0 -0
  109. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/consume_retrier.py +0 -0
  110. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/consumed_event_retry.py +0 -0
  111. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/consumed_event_retry_repository.py +0 -0
  112. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/max_retries_consume_retrier.py +0 -0
  113. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/max_retries_negative_exception.py +0 -0
  114. {buz-2.14.2 → buz-2.14.3}/src/buz/event/strategies/retry/reject_callback.py +0 -0
  115. {buz-2.14.2 → buz-2.14.3}/src/buz/event/subscriber.py +0 -0
  116. {buz-2.14.2 → buz-2.14.3}/src/buz/event/sync/__init__.py +0 -0
  117. {buz-2.14.2 → buz-2.14.3}/src/buz/event/sync/sync_event_bus.py +0 -0
  118. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/__init__.py +0 -0
  119. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/event_to_outbox_record_translator.py +0 -0
  120. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/fqn_to_event_mapper.py +0 -0
  121. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_criteria/__init__.py +0 -0
  122. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_criteria/deliverable_records_outbox_criteria_factory.py +0 -0
  123. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria.py +0 -0
  124. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_criteria/outbox_criteria_factory.py +0 -0
  125. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_criteria/outbox_sorting_criteria.py +0 -0
  126. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record.py +0 -0
  127. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_finder/__init__.py +0 -0
  128. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_finder/outbox_record_stream_finder.py +0 -0
  129. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_finder/polling_outbox_record_stream_finder.py +0 -0
  130. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_to_event_translator.py +0 -0
  131. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/__init__.py +0 -0
  132. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/abstract_outbox_record_validator.py +0 -0
  133. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_size_not_allowed_exception.py +0 -0
  134. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validation_exception.py +0 -0
  135. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/outbox_record_validator.py +0 -0
  136. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_record_validation/size_outbox_record_validator.py +0 -0
  137. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/outbox_repository.py +0 -0
  138. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/transactional_outbox_event_bus.py +0 -0
  139. {buz-2.14.2 → buz-2.14.3}/src/buz/event/transactional_outbox/transactional_outbox_worker.py +0 -0
  140. {buz-2.14.2 → buz-2.14.3}/src/buz/event/worker.py +0 -0
  141. {buz-2.14.2 → buz-2.14.3}/src/buz/handler.py +0 -0
  142. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/__init__.py +0 -0
  143. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/__init__.py +0 -0
  144. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/not_all_partition_assigned_exception.py +0 -0
  145. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/not_valid_kafka_message_exception.py +0 -0
  146. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/not_valid_partition_number_exception.py +0 -0
  147. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/topic_already_created_exception.py +0 -0
  148. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/exceptions/topic_not_found_exception.py +0 -0
  149. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/__init__.py +0 -0
  150. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/auto_create_topic_configuration.py +0 -0
  151. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/consumer_initial_offset_position.py +0 -0
  152. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/create_kafka_topic.py +0 -0
  153. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_connection_config.py +0 -0
  154. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_connection_credentials.py +0 -0
  155. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_connection_plain_text_credentials.py +0 -0
  156. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_connection_sasl_credentials.py +0 -0
  157. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_consumer_record.py +0 -0
  158. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_poll_record.py +0 -0
  159. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_supported_compression_type.py +0 -0
  160. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_supported_sasl_mechanisms.py +0 -0
  161. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/models/kafka_supported_security_protocols.py +0 -0
  162. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/services/__init__.py +0 -0
  163. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/services/async_kafka_producer.py +0 -0
  164. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/services/kafka_admin_client.py +0 -0
  165. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/services/kafka_admin_test_client.py +0 -0
  166. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/domain/services/kafka_producer.py +0 -0
  167. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/__init__.py +0 -0
  168. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/__init__.py +0 -0
  169. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/aiokafka_consumer.py +0 -0
  170. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/aiokafka_producer.py +0 -0
  171. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/rebalance/__init__.py +0 -0
  172. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/rebalance/kafka_callback_rebalancer.py +0 -0
  173. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/translators/__init__.py +0 -0
  174. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/aiokafka/translators/consumer_initial_offset_position_translator.py +0 -0
  175. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/cdc/cdc_message.py +0 -0
  176. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/__init__.py +0 -0
  177. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/byte_deserializer.py +0 -0
  178. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/bytes_to_message_deserializer.py +0 -0
  179. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/implementations/__init__.py +0 -0
  180. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/cdc_record_bytes_to_event_deserializer.py +0 -0
  181. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/implementations/cdc/not_valid_cdc_message_exception.py +0 -0
  182. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/implementations/json_byte_deserializer.py +0 -0
  183. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/deserializers/implementations/json_bytes_to_message_deserializer.py +0 -0
  184. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/interfaces/__init__.py +0 -0
  185. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/interfaces/async_connection_manager.py +0 -0
  186. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/interfaces/connection_manager.py +0 -0
  187. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/__init__.py +0 -0
  188. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/exception/consumer_interrupted_exception.py +0 -0
  189. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_client.py +0 -0
  190. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/kafka_python_admin_test_client.py +0 -0
  191. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/kafka_python_producer.py +0 -0
  192. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/translators/__init__.py +0 -0
  193. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/kafka_python/translators/consumer_initial_offset_position_translator.py +0 -0
  194. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/serializers/byte_serializer.py +0 -0
  195. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/serializers/implementations/cdc_record_bytes_to_event_serializer.py +0 -0
  196. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/serializers/implementations/json_byte_serializer.py +0 -0
  197. {buz-2.14.2 → buz-2.14.3}/src/buz/kafka/infrastructure/serializers/kafka_header_serializer.py +0 -0
  198. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/__init__.py +0 -0
  199. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/handler_fqn_not_found_exception.py +0 -0
  200. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/locator.py +0 -0
  201. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/message_fqn_not_found_exception.py +0 -0
  202. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/pypendency/__init__.py +0 -0
  203. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/pypendency/container_locator.py +0 -0
  204. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/pypendency/container_locator_resolution_configuration.py +0 -0
  205. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/pypendency/handler_not_found_exception.py +0 -0
  206. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/pypendency/handler_not_registered_exception.py +0 -0
  207. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/sync/__init__.py +0 -0
  208. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/sync/handler_already_registered_exception.py +0 -0
  209. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/sync/handler_not_registered_exception.py +0 -0
  210. {buz-2.14.2 → buz-2.14.3}/src/buz/locator/sync/instance_locator.py +0 -0
  211. {buz-2.14.2 → buz-2.14.3}/src/buz/message.py +0 -0
  212. {buz-2.14.2 → buz-2.14.3}/src/buz/middleware/__init__.py +0 -0
  213. {buz-2.14.2 → buz-2.14.3}/src/buz/middleware/middleware.py +0 -0
  214. {buz-2.14.2 → buz-2.14.3}/src/buz/middleware/middleware_chain_builder.py +0 -0
  215. {buz-2.14.2 → buz-2.14.3}/src/buz/py.typed +0 -0
  216. {buz-2.14.2 → buz-2.14.3}/src/buz/query/__init__.py +0 -0
  217. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/__init__.py +0 -0
  218. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/base_query_handler.py +0 -0
  219. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/middleware/__init__.py +0 -0
  220. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/middleware/base_handle_middleware.py +0 -0
  221. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/middleware/handle_middleware.py +0 -0
  222. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  223. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/query_bus.py +0 -0
  224. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/query_handler.py +0 -0
  225. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/self_process/__init__.py +0 -0
  226. {buz-2.14.2 → buz-2.14.3}/src/buz/query/asynchronous/self_process/self_process_query_bus.py +0 -0
  227. {buz-2.14.2 → buz-2.14.3}/src/buz/query/more_than_one_query_handler_related_exception.py +0 -0
  228. {buz-2.14.2 → buz-2.14.3}/src/buz/query/query.py +0 -0
  229. {buz-2.14.2 → buz-2.14.3}/src/buz/query/query_response.py +0 -0
  230. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/__init__.py +0 -0
  231. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/base_query_handler.py +0 -0
  232. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/middleware/__init__.py +0 -0
  233. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/middleware/base_handle_middleware.py +0 -0
  234. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/middleware/handle_middleware.py +0 -0
  235. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/middleware/handle_middleware_chain_resolver.py +0 -0
  236. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/query_bus.py +0 -0
  237. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/query_handler.py +0 -0
  238. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/self_process/__init__.py +0 -0
  239. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/self_process/self_process_query_bus.py +0 -0
  240. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/synced_async/__init__.py +0 -0
  241. {buz-2.14.2 → buz-2.14.3}/src/buz/query/synchronous/synced_async/synced_async_query_bus.py +0 -0
  242. {buz-2.14.2 → buz-2.14.3}/src/buz/queue/__init__.py +0 -0
  243. {buz-2.14.2 → buz-2.14.3}/src/buz/queue/in_memory/in_memory_multiqueue_repository.py +0 -0
  244. {buz-2.14.2 → buz-2.14.3}/src/buz/queue/in_memory/in_memory_queue_repository.py +0 -0
  245. {buz-2.14.2 → buz-2.14.3}/src/buz/queue/multiqueue_repository.py +0 -0
  246. {buz-2.14.2 → buz-2.14.3}/src/buz/queue/queue_repository.py +0 -0
  247. {buz-2.14.2 → buz-2.14.3}/src/buz/serializer/message_to_bytes_serializer.py +0 -0
  248. {buz-2.14.2 → buz-2.14.3}/src/buz/serializer/message_to_json_bytes_serializer.py +0 -0
  249. {buz-2.14.2 → buz-2.14.3}/src/buz/wrapper/__init__.py +0 -0
  250. {buz-2.14.2 → buz-2.14.3}/src/buz/wrapper/async_to_sync.py +0 -0
  251. {buz-2.14.2 → buz-2.14.3}/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.14.2
3
+ Version: 2.14.3
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
@@ -22,6 +22,7 @@ Classifier: Typing :: Typed
22
22
  Provides-Extra: aiokafka
23
23
  Provides-Extra: kombu
24
24
  Provides-Extra: pypendency
25
+ Requires-Dist: aiohttp (>=3.11.13,<4.0.0)
25
26
  Requires-Dist: aiokafka[lz4] (==0.12.0) ; extra == "aiokafka"
26
27
  Requires-Dist: asgiref (>=3.8.1,<4.0.0) ; extra == "aiokafka"
27
28
  Requires-Dist: asyncio (>=3.4.3,<4.0.0) ; extra == "aiokafka"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "buz"
3
- version = "2.14.2"
3
+ version = "2.14.3"
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>"]
@@ -31,6 +31,7 @@ asyncio = { version ="^3.4.3", optional = true }
31
31
  aiokafka = {version = "==0.12.0", extras = ["lz4"], optional = true}
32
32
  asgiref = {version = "^3.8.1", optional = true}
33
33
  cachetools = "^5.5.0"
34
+ aiohttp = "^3.11.13"
34
35
 
35
36
  [tool.poetry.dev-dependencies]
36
37
  black = "^23.3"
@@ -1,3 +1,4 @@
1
+ import json
1
2
  import traceback
2
3
  from abc import abstractmethod
3
4
  from asyncio import Lock, Task, create_task, gather, Semaphore, Event as AsyncIOEvent, sleep
@@ -5,6 +6,7 @@ from datetime import timedelta, datetime
5
6
  from itertools import cycle
6
7
  from logging import Logger
7
8
  from typing import AsyncIterator, Optional, Sequence, Type, TypeVar
9
+ from aiohttp import web
8
10
 
9
11
  from aiokafka import TopicPartition
10
12
  from aiokafka.coordinator.assignors.abstract import AbstractPartitionAssignor
@@ -43,6 +45,7 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
43
45
  kafka_partition_assignors: tuple[Type[AbstractPartitionAssignor], ...] = (),
44
46
  subscribers: Sequence[MetaSubscriber],
45
47
  logger: Logger,
48
+ health_check_port: Optional[int],
46
49
  consumer_initial_offset_position: ConsumerInitialOffsetPosition,
47
50
  auto_create_topic_configuration: Optional[AutoCreateTopicConfiguration] = None,
48
51
  seconds_between_executions_if_there_are_no_tasks_in_the_queue: int = 1,
@@ -55,6 +58,7 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
55
58
  self.__kafka_partition_assignors = kafka_partition_assignors
56
59
  self.__subscribers = subscribers
57
60
  self._logger = logger
61
+ self.__health_check_port = health_check_port
58
62
  self.__consumer_initial_offset_position = consumer_initial_offset_position
59
63
  self.__max_records_retrieved_per_poll = 1
60
64
  self.__executor_per_consumer_mapper: dict[AIOKafkaConsumer, KafkaEventSubscriberExecutor] = {}
@@ -78,12 +82,26 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
78
82
  )
79
83
  self.__seconds_between_polls_if_there_are_no_new_tasks = seconds_between_polls_if_there_are_no_new_tasks
80
84
  self.__polling_tasks_semaphore = Semaphore(max_number_of_concurrent_polling_tasks)
81
-
82
85
  self.__task_execution_mutex = Lock()
83
86
 
87
+ async def configure_health_check_server(self, health_check_port: int) -> web.TCPSite:
88
+ self._logger.info(f"Starting health check server on port {health_check_port}")
89
+ app = web.Application()
90
+ app.router.add_get("/health", lambda request: self.__health_check())
91
+ runner = web.AppRunner(app)
92
+ await runner.setup()
93
+ site = web.TCPSite(runner, "localhost", health_check_port)
94
+ await site.start()
95
+ return site
96
+
84
97
  async def run(self) -> None:
85
98
  start_time = datetime.now()
86
99
  await self.__generate_kafka_consumers()
100
+ health_check_server: Optional[web.TCPSite] = None
101
+
102
+ if self.__health_check_port is not None:
103
+ health_check_server = await self.configure_health_check_server(self.__health_check_port)
104
+
87
105
  self.__initial_coroutines_created_elapsed_time = datetime.now() - start_time
88
106
 
89
107
  if len(self.__executor_per_consumer_mapper) == 0:
@@ -94,6 +112,9 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
94
112
  worker_errors = await self.__run_worker()
95
113
  self.__events_processed_elapsed_time = datetime.now() - start_consumption_time
96
114
 
115
+ if health_check_server is not None:
116
+ await health_check_server.stop()
117
+
97
118
  await self.__handle_graceful_stop(worker_errors)
98
119
 
99
120
  async def __handle_graceful_stop(self, worker_errors: tuple[Optional[Exception], Optional[Exception]]) -> None:
@@ -270,6 +291,15 @@ class BaseBuzAIOKafkaAsyncConsumer(AsyncConsumer):
270
291
  for kafka_consumer in self.__queue_per_consumer_mapper.keys():
271
292
  await kafka_consumer.stop()
272
293
 
294
+ async def __health_check(self) -> web.Response:
295
+ health_information = {
296
+ "subscribers": [subscriber.fqn() for subscriber in self.__subscribers],
297
+ "number_of_subscribers": len(self.__subscribers),
298
+ "event_processed": self.__events_processed,
299
+ }
300
+
301
+ return web.Response(text=json.dumps(health_information), content_type="application/json")
302
+
273
303
  def __print_statistics(self) -> None:
274
304
  self._logger.info("Number of subscribers: %d", len(self.__subscribers))
275
305
  self._logger.info(f"Start kafka consumers elapsed time: {self.__start_kafka_consumers_elapsed_time}")
@@ -51,6 +51,7 @@ class BuzAIOKafkaAsyncConsumer(BaseBuzAIOKafkaAsyncConsumer):
51
51
  seconds_between_polls_if_there_are_tasks_in_the_queue: int = 1,
52
52
  seconds_between_polls_if_there_are_no_new_tasks: int = 1,
53
53
  max_number_of_concurrent_polling_tasks: int = 20,
54
+ health_check_port: Optional[int] = None,
54
55
  ):
55
56
  super().__init__(
56
57
  connection_config=connection_config,
@@ -67,6 +68,7 @@ class BuzAIOKafkaAsyncConsumer(BaseBuzAIOKafkaAsyncConsumer):
67
68
  seconds_between_polls_if_there_are_tasks_in_the_queue=seconds_between_polls_if_there_are_tasks_in_the_queue,
68
69
  seconds_between_polls_if_there_are_no_new_tasks=seconds_between_polls_if_there_are_no_new_tasks,
69
70
  max_number_of_concurrent_polling_tasks=max_number_of_concurrent_polling_tasks,
71
+ health_check_port=health_check_port,
70
72
  )
71
73
  self.__on_fail_strategy = on_fail_strategy
72
74
  self.__consume_middlewares = consume_middlewares
@@ -52,6 +52,7 @@ class BuzAIOKafkaMultiThreadedConsumer(BaseBuzAIOKafkaAsyncConsumer):
52
52
  seconds_between_polls_if_there_are_tasks_in_the_queue: int = 1,
53
53
  seconds_between_polls_if_there_are_no_new_tasks: int = 1,
54
54
  max_number_of_concurrent_polling_tasks: int = 20,
55
+ health_check_port: Optional[int] = 3123,
55
56
  ):
56
57
  super().__init__(
57
58
  connection_config=connection_config,
@@ -68,6 +69,7 @@ class BuzAIOKafkaMultiThreadedConsumer(BaseBuzAIOKafkaAsyncConsumer):
68
69
  seconds_between_polls_if_there_are_tasks_in_the_queue=seconds_between_polls_if_there_are_tasks_in_the_queue,
69
70
  seconds_between_polls_if_there_are_no_new_tasks=seconds_between_polls_if_there_are_no_new_tasks,
70
71
  max_number_of_concurrent_polling_tasks=max_number_of_concurrent_polling_tasks,
72
+ health_check_port=health_check_port,
71
73
  )
72
74
  self.__on_fail_strategy = on_fail_strategy
73
75
  self.__consume_middlewares = consume_middlewares
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
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