5#include <userver/engine/task/task_processor_fwd.hpp>
6#include <userver/engine/task/task_with_result.hpp>
7#include <userver/kafka/exceptions.hpp>
8#include <userver/kafka/headers.hpp>
9#include <userver/utils/fast_pimpl.hpp>
10#include <userver/utils/statistics/writer.hpp>
12USERVER_NAMESPACE_BEGIN
22extern const std::optional<std::uint32_t> kUnassignedPartition;
29struct ProducerConfiguration;
63 const std::string& name,
64 engine::TaskProcessor& producer_task_processor,
65 const impl::ProducerConfiguration& configuration,
66 const impl::Secret& secrets
76 Producer(
const Producer&) =
delete;
77 Producer(Producer&&) =
delete;
79 Producer& operator=(
const Producer&) =
delete;
80 Producer& operator=(Producer&&) =
delete;
106 utils::zstring_view topic_name,
107 std::string_view key,
108 std::string_view message,
109 std::optional<std::uint32_t> partition = kUnassignedPartition,
110 HeaderViews headers = {}
122 [[nodiscard]] engine::TaskWithResult<
void>
SendAsync(
123 std::string topic_name,
126 std::optional<std::uint32_t> partition = kUnassignedPartition,
127 HeaderViews headers = {}
133 void DumpMetric(utils::statistics::Writer& writer)
const;
137 utils::zstring_view topic_name,
138 std::string_view key,
139 std::string_view message,
140 std::optional<std::uint32_t> partition,
141 impl::HeadersHolder&& headers_holder
145 const std::string name_;
146 engine::TaskProcessor& producer_task_processor_;
148 static constexpr std::size_t kImplSize{944};
149 static constexpr std::size_t kImplAlign{16};
150 utils::FastPimpl<impl::ProducerImpl, kImplSize, kImplAlign> producer_;