69{
70
71 std::string binary;
72 entry.SerializeToString(&binary);
73
76
78 RdKafka::Topic::PARTITION_UA,
79 RdKafka::Producer::RK_MSG_COPY,
80 const_cast<char*>(binary.c_str()),
81 binary.size(),
82 key.c_str(),
83 key.size(),
84 0,
85 nullptr);
86
87 if (err == RdKafka::ERR_NO_ERROR)
88 return;
89
90 std::string err_cause;
91
92 switch (err) {
93 case RdKafka::ERR__QUEUE_FULL:
94 err_cause = "maximum number of outstanding messages reached";
95 break;
96 case RdKafka::ERR_MSG_SIZE_TOO_LARGE:
97 err_cause = "message too large";
98 break;
99 case RdKafka::ERR__UNKNOWN_PARTITION:
100 err_cause = "Unknown partition";
101 break;
102 case RdKafka::ERR__UNKNOWN_TOPIC:
103 err_cause = "Unknown topic (";
104 err_cause += topic;
105 err_cause += ')';
106 break;
107 default:
108 err_cause = "unknown";
109 break;
110 }
111
112 throw FailedProduce(
ERS_HERE, key, err_cause);
113}
std::string extract_key(const dunedaq::opmon::OpMonEntry &e) const noexcept
std::string extract_topic(const dunedaq::opmon::OpMonEntry &) const noexcept