Spring 云流 + Avro
Spring Cloud Stream + Avro
我无法使用功能供应商发送 Avro 消息。 SCSt 尝试将消息作为 JSON 发送,但失败了。有人可以指出是否需要任何其他配置吗?
这是供应商的功能 bean
@Bean
public Supplier<Sensor> supplier() {
Random random = new Random();
return () -> Sensor.newBuilder()
.setId("id")
.setTemperature(random.nextFloat())
.setAcceleration(random.nextFloat())
.setVelocity(random.nextFloat())
.build();
}
和配置
spring:
cloud:
schema-registry-client:
endpoint: http://localhost:8990
schema:
avro:
schema-locations: classpath:avro/sensor.avsc
stream:
function:
definition: supplier
bindings:
supplier-out-0: sensor
bindings:
sensor:
destination: sensor-exchange
group: sensor-queue
content-type: application/*+avro
这是由于发生转换的问题。我在 Spring 云函数中提出了一个问题:https://github.com/spring-cloud/spring-cloud-function/issues/611
作为解决方法,您可以使用如下内容类型:spring.cloud.stream.bindings...content-type: application/+avro
,生产者配置中没有通配符类型。解决上述问题后,您可以继续使用其中包含通配符 (application/*+avro
) 的内容类型。抱歉给您带来不便。
我更新了 this sample 以反映此解决方法,当我们得到适当的修复后,它将恢复。
更新:Spring Cloud Function 中的问题在 3.0.x
分支中得到解决。请使用以下依赖项来修复。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-context</artifactId>
<version>3.0.12.BUILD-SNAPSHOT</version>
</dependency>
有了这个,你可以在内容类型中使用通配符类型:application/*+avro
.
3.0.12.RELEASE
下周可用。
我无法使用功能供应商发送 Avro 消息。 SCSt 尝试将消息作为 JSON 发送,但失败了。有人可以指出是否需要任何其他配置吗?
这是供应商的功能 bean
@Bean
public Supplier<Sensor> supplier() {
Random random = new Random();
return () -> Sensor.newBuilder()
.setId("id")
.setTemperature(random.nextFloat())
.setAcceleration(random.nextFloat())
.setVelocity(random.nextFloat())
.build();
}
和配置
spring:
cloud:
schema-registry-client:
endpoint: http://localhost:8990
schema:
avro:
schema-locations: classpath:avro/sensor.avsc
stream:
function:
definition: supplier
bindings:
supplier-out-0: sensor
bindings:
sensor:
destination: sensor-exchange
group: sensor-queue
content-type: application/*+avro
这是由于发生转换的问题。我在 Spring 云函数中提出了一个问题:https://github.com/spring-cloud/spring-cloud-function/issues/611
作为解决方法,您可以使用如下内容类型:spring.cloud.stream.bindings...content-type: application/+avro
,生产者配置中没有通配符类型。解决上述问题后,您可以继续使用其中包含通配符 (application/*+avro
) 的内容类型。抱歉给您带来不便。
我更新了 this sample 以反映此解决方法,当我们得到适当的修复后,它将恢复。
更新:Spring Cloud Function 中的问题在 3.0.x
分支中得到解决。请使用以下依赖项来修复。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-context</artifactId>
<version>3.0.12.BUILD-SNAPSHOT</version>
</dependency>
有了这个,你可以在内容类型中使用通配符类型:application/*+avro
.
3.0.12.RELEASE
下周可用。