我正在使用Edgware版本中的 Spring Cloud Stream 绑定器来发送Kafka消息。我也使用 Spring Sleuth 和 Zipkin 。
Spring使用自定义类struct netconn *client = NULL;
struct netconn *nc = netconn_new(NETCONN_TCP);
netconn_bind(nc, IP_ADDR_ANY, 8569);
netconn_listen(nc);
while (1) {
err_t err = netconn_accept(nc, &client);
if (err == ERR_OK) {
struct netbuf *nb;
if ((err = netconn_recv(client, &nb)) == ERR_OK) {
/* INTERPRETE INCOMING DATA HERE?? */
}
netbuf_delete(nb);
}
netconn_close(client);
netconn_delete(client);
}
将标头嵌入到Kafka消息中。这会导致消息的一些非Spring消费者出现问题,他们必须处理这种自定义解码。
我的问题:有没有办法使用自定义编码器/解码器为消息头配置Spring(例如普通JSON)?或者可能使用Kafka Headers?
理想情况下,任何自定义实现都需要与Spring Sleuth和Zipkin一起使用。
我一直在查看最新的Finchley版本,看看Kafka标题是否会得到支持但不确定。
答案 0 :(得分:1)
嵌入式标头不可插入,但您可以使用...producer.header-mode=raw
禁用它们。
使用Ditmars(1.3.x),您可以使用支持本机标头的kafka11工件 - 您必须覆盖一堆依赖项(如果您使用{{1},则必须覆盖kafka-clients,SK,SIK和kafka本身) } broker用于测试。请参阅the relesae notes)。
有a discussion on Gitter覆盖版本。
spring-kafka 1.3.x本身使用0.11但1.3.1及更高版本(当前1.3.2)也支持1.0.0客户端。
Elmhurst(2.0) - 目前处于里程碑 - 使用SK 2.1.0,原生使用1.0.0 kafka。