当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Cloud Stream中同时具有消费者和生产者事务的应用程序中设置事务ID前缀

郎成弘
2023-03-14

对于已由侦听器容器启动的事务,我们需要为所有应用实例设置相同的事务id前缀。对于仅生产事务,我们需要为每个实例设置不同的值。

我在应用程序中使用了Spring Cloud Stream Kafka活页夹,它既有事务类型,也有属性Spring。云流动Kafka。粘合剂交易事务id前缀用于创建公共事务管理器。

我想知道如何使这一切正常工作,因为似乎你不能同时拥有这两种方式。

共有1个答案

东方志尚
2023-03-14

如果您的代理是2.5或更高版本,并且您使用的是当前受支持的spring cloud stream(3.2.x)和spring kafka(2.8.x)版本,则不再需要该要求。

您现在必须使用唯一前缀,即使对于消费者启动的事务也是如此。

如果您使用的是较旧的代理或不受支持的spring kafka版本,默认情况下不使用EOSMode V2(BETA),则可以配置两个绑定。

https://docs.spring.io/spring-kafka/docs/current/reference/html/#transaction-id-prefix

当EOSMode时,此问题(事务性.id的不同规则)已被消除。测试版正在使用(与代理版本一起使用

 类似资料:
  • 我对Spring的Kafka还是有点陌生。我的问题很简单。我有一个仅限消费者使用的应用程序,它可以连续读取Kafka,处理消息,并使用Ack侦听器手动确认消息。我有一个上游生产者专用应用程序的依赖项,在该应用程序中,他们负责向Kafka主题发送消息,以便我使用。我们最近在生产者和消费者之间实现了事务,但我想了解更多关于故障点的信息,以及如何处理那些回滚的事务,以便它们不会丢失?我已经读到,最好使用

  • 通过 allowNon 事务属性,可以使用相同的 KafkaTemplate 来创建事务性和非事务性生产者。这两种生产者将使用来自Kafka生产者工厂的相同配置。 在某些特定情况下,可能需要为这两种生产者使用不同的配置。 下面的例子展示了一个具体的用例 KafkaTemplate-非事务性生产者- 问题可以通过拥有2个工厂和/或2个模板来解决,但为了避免样板代码和复杂性,我们的想法是保持相同的模板

  • 我试图找到一种在以下场景中使用ThreadPoolExecutor的方法: 我有一个单独的线程在线程池中生成和提交任务 为了提供更多的上下文,我目前只需一次提交所有任务,并取消ExecutorService返回的所有未来。在最长生成时间到期后提交。我忽略所有产生的取消异常,因为它们是预期的。问题是未来的行为。cancel(false)很奇怪,不适合我的用例: 它可以防止任何未启动的任务运行(良好)

  • 我正在尝试Kafka跨国制作人在Java。 就像 它没有抛出任何错误。并且也在Kafka中推送消息,它是可用的。 我可以看到经纪人的日志是这样的: 5分钟后,我找到了这个经纪人日志。[2017-10-30 19:36:44123]信息[Broker 1001上的组元数据管理器]:在0毫秒内删除了0个过期的偏移量。(kafka.coordinator.group.GroupMetadataManag

  • 本教程演示了如何发送和接收来自Spring Kafka的消息。 首先创建一个能够发送消息给Kafka主题的Spring Kafka Producer。 接下来,我们创建一个Spring Kafka Consumer,它可以收听发送给Kafka主题的消息。使用适当的键/值序列化器和解串器来配置它们。 最后用一个简单的Spring Boot应用程序演示应用程序。 下载并安装Apache Kafka 要

  • 我看了一个教程,它解释了如何将RabbitMQ集成到Spring Boot应用程序中。在本教程中,(使用者)和(生产者)类位于同一个项目中。我想在两个不同的Spring Boot应用程序中实现它们。但是,由于类的原因,我无法将教程项目拆分为两个使用者项目和生产者项目。因为它耦合了(使用者)和(生产者)类。 如何实现和配置两个不同的cosnumer和producer Spring Boot应用程序?