Spring Cloud Stream嵌入式标题格式(Kafka)

时间:2018-01-09 14:05:22

标签: java spring-cloud-stream spring-kafka

我正在使用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标题是否会得到支持但不确定。

1 个答案:

答案 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。