Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 事务性地从JMS到多个Kafka集群的驼峰路由_Apache Camel_Jms_Apache Kafka - Fatal编程技术网

Apache camel 事务性地从JMS到多个Kafka集群的驼峰路由

Apache camel 事务性地从JMS到多个Kafka集群的驼峰路由,apache-camel,jms,apache-kafka,Apache Camel,Jms,Apache Kafka,我正在尝试将camel配置为从单个JMS队列读取数据并发布到2个不同的Kafka集群 我的配置类似于 from("jms:queueName?concurrentConsumers=1") .transacted() .to("kafka:host1:port1?topic=kafkaTopic") .to("kafka:host2:port2?topic=kafkaTopic") 我的问题是如何将进程配置为处于事务中,这意味着如果它无法写入其中一个Kafka,它应该回滚来自另一个

我正在尝试将camel配置为从单个JMS队列读取数据并发布到2个不同的Kafka集群

我的配置类似于

from("jms:queueName?concurrentConsumers=1")
  .transacted()
  .to("kafka:host1:port1?topic=kafkaTopic")
  .to("kafka:host2:port2?topic=kafkaTopic")
我的问题是如何将进程配置为处于事务中,这意味着如果它无法写入其中一个Kafka,它应该回滚来自另一个Kafka的写入,并且消息将保留在JMS队列中


在我的集成测试中,当我关闭第二个kafka并将消息发布到JMS队列时,消息仍然到达第一个kafka。

好吧,我认为kafka不支持事务,但我认为最终可以通过主题压缩来完成。这意味着,如果您向卡夫卡主题发送一条带有密钥和某个值的消息,那么您必须发送一条带有相同密钥和null值的消息以使其无效。当清理开始时,它们将删除这两条消息,但只删除非活动段上的消息!!!嗯,我认为卡夫卡不支持事务,但我认为最终可以通过主题压缩来实现。这意味着,如果您向卡夫卡主题发送一条带有密钥和某个值的消息,那么您必须发送一条带有相同密钥和null值的消息以使其无效。当清理开始时,它们将删除这两条消息,但只删除非活动段上的消息!!!