在将kafka与春季云流集成中需要一些帮助。该应用程序非常简单,分为两部分(作为独立的Java进程运行)
我已经为消费者和RequestReceiverChannel和ResponseSenderChannel创建了RequestSenderChannel和ResponseReceiverChannel接口 用于生产者应用程序。他们两个共享同一个yaml文件。 根据文档spring.cloud.stream.bindings..destination应该指定消息发送或接收到的主题。 但是,当我运行该应用程序时,该应用程序会在kafka中创建“ RequestSender”,“ RequestReceiver”,“ ResponseSender”和“ ResponseReceiver”主题。
我的假设是:由于YAML文件中的目标仅指定了两个主题“ RequestTopic”和“ ResponseTopic”,因此它应该已经创建了这些主题。 但会为YAML文件中“ spring.cloud.stream.bindings”中指定的属性创建Kafka主题。 有人可以在配置/代码中指出问题吗?
public interface RequestReceiverChannel
{
String requestReceiver ="RequestReceiver";
@Input(requestReceiver)
SubscribableChannel pathQueryRequest();
}
public interface RequestSenderChannel
{
String RequestSender ="RequestSender";
@Output(RequestSender)
MessageChannel pathQueryRequestSender();
}
public interface ResponseReceiverChannel
{
String ResponseReceiver = "ResponseReceiver";
@Input(ResponseReceiver)
SubscribableChannel pceResponseServiceReceiver();
}
public interface ResponseSenderChannel
{
String ResponseSender = "ResponseSender";
@Output(ResponseSender)
MessageChannel pceResponseService();
}
'''
YAML配置文件
spring:
cloud:
stream:
defaultBinder: kafka
bindings:
RequestSender:
binder: kafka
destination: RequestTopic
content-type: application/protobuf
group: consumergroup
ResponseSender:
binder: kafka
destination: ResponseTopic
content-type: application/protobuf
group: consumergroup
RequestReceiver:
binder: kafka
destination: RequestTopic
content-type: application/protobuf
group: consumergroup
ResponseReceiver:
binder: kafka
destination: ResponseTopic
content-type: application/protobuf
group: consumergroup
kafka:
bindings:
RequestTopic:
consumer:
autoCommitOffset: false
ResponseTopic:
consumer:
autoCommitOffset: false
binder:
brokers: ${SERVICE_KAFKA_HOST:localhost}
zkNodes: ${SERVICE_ZOOKEEPER_HOST:127.0.0.1}
defaultZkPort: ${SERVICE_ZOOKEEPER_PORT:2181}
defaultBrokerPort: ${SERVICE_KAFKA_PORT:9092}
答案 0 :(得分:1)
通过执行DateTime
,您表示希望将spring.cloud.stream.bindings.<binding-name>.destination=foo
(例如,<binding-name>
)指定的绑定映射到名为RequestSender
的代理目标。如果该目的地不存在,它将被自动配置。
因此没有问题。
也就是说,我们刚刚发布了Horsham.RELEASE(云Hoxton.RELEASE的一部分),而我们正在从您当前使用的基于注释的模型中移开,而转而使用一种更为简单的功能模型。您可以在我们的release blog中阅读有关它的更多信息,该文章还提供了我们详细阐述的4个帖子的链接,并提供了有关函数式编程范例的更多示例。