我需要使用启用的kafka和Spring Boot连接到事件中心,并且我有连接字符串和名称空间,应该在哪里连接。
我使用这样的依赖关系
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>spring-cloud-azure-eventhubs-stream-binder</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
我找到了一个教程,我需要从我的本地机器使用az login登录到azure并创建auth文件,但是我被提供了应该使用的连接字符串,所以有没有任何方法可以使用如下命名空间指定仅连接字符串:
spring.cloud.azure.eventhub.connection-string
spring.cloud.azure.eventhub.namespace
因为现在正在抱怨缺少资源组。
我应该如何连接到EventHub?
tl;博士
我的问题包含不正确的依赖项,我添加了两个绑定,这是不正确的。当您启动应用程序spring cloud stream时,不知道什么是主要的。所以你只需要选择一个。
因此,由于我想使用Event Hub,但之前没有使用它的经验,但有使用Kafka的经验,并且Event Hub的工作模式符合Kafka协议,所以我开始这样看。微软的所有教程都不起作用(我很难过)。它们已经过时了。
所以,我开始想如果它是通过Kafka协议工作的,也许我可以将事件中心作为简单的Kafka进行一些配置更改。谷歌搜索后,我找到了很多如何做到这一点的教程。
您只需要创建常规的Kafka消费者/生产者。我已经用Spring Cloud Stream做到了
@Slf4j
@EnableBinding(Sink.class)
public class KafkaSink {
@StreamListener(Sink.INPUT)
public void consumerMessage(TestMessage testMessage) {
log.info("{}", testMessage);
}
}
@Component
@EnableBinding(Source.class)
public class KafkaSource {
private final MessageChannel output;
@Autowired
public KafkaSource(MessageChannel output) {
this.output = output;
}
public void send(TestMessage testMessage) {
output.send(MessageBuilder.withPayload(testMessage).build());
}
}
然后只需将适当的jaas配置添加到应用程序中。*文件。您需要获取事件中心的连接字符串
我的yaml文件:
spring:
cloud:
stream:
bindings:
input:
destination: my-topic
output:
destination: my-topic
kafka:
binder:
auto-create-topics: true
brokers: ${EVENT_HUB_KAFKA_BROKER}
configuration:
sasl:
jaas:
config: ${EVENT_HUB_CONNECTION_STRING}
mechanism: PLAIN
security:
protocol: SASL_SSL
EVENT_HUB_KAFKA_BROKER一个重要的东西应该是事件中心地址,比如blablabla.servicebus.windows.net:9093
(不要忘记端口)。EVENT_HUB_CONNECTION_STRING你应该指定将连接字符串解析为密码的模块,它应该是org.apache.kafka.common.security.plain.PlainLoginModule必需的用户名="$ConnectionString"密码="{your_connection_string}"\
我正在尝试加入一个名单: 这不编译说: 然而,这并不抱怨: 有人能给我解释一下原因吗?对于和之间的区别,我也很感激一些说教性的解释,因为我认为我没有理解对。
本文向大家介绍通过concat()方法进行字符串连接。,包括了通过concat()方法进行字符串连接。的使用技巧和注意事项,需要的朋友参考一下 您可以使用String类的方法来连接两个字符串。此类将指定的字符串连接到该字符串的末尾。 示例 输出结果
问题内容: 我有以下代码 输出为。 Java如何完成字符串连接的技巧? 问题答案: 因为Java将表达式转换为类似 实际上,我认为它可能使用s,因此: 解决更高效 这使用“ 字符串”构建器上的方法(针对每种类型),这些方法可以正确处理
本文章将介绍Thymeleaf标准表达式语法中的概念。 学习如何在Thymeleaf模板中显示对象(Bean)的属性值。 已经将类的bean已经设置为名称为的上下文模型。 为这些和属性添加一些格式,学习使用字符串相连接输出。 最后,修改模板以获得一个合理的静态原型(例如,通过一些原型数据替换并显示结果)。 如果要上机实践,请参考:Thymeleaf+SpringMVC5示例项目。这里不再重复创建项
我正在读一本书叫做。NET Gotchas(非常值得一读),它说明了String和StringBuilder之间的性能差异,它提出了一个我觉得不能没有答案的问题!虽然我不知道这两个类的内部结构(不看这些类的反射版本),但我想知道;因为运算符在。NET是可重载的,为什么微软没有实现String类来在内部使用StringBuilder并重载连接运算符来简单调用。在StringBuilder中追加()?
Parameter Position Type Required cat Description 1 string No empty This value to catentate to the given variable. 将cat里的值连接到给定的变量后面. This value is concatenated to the given variable. 将cat里的值连接到给定的变量后面