KafkaListener ConsumerConfig最早用于多个侦听器的AUTO_OFFSET_RESET_DOC

时间:2019-07-23 12:11:55

标签: java spring apache-kafka listener consumer

我的spring boot应用程序中有3个侦听器。从一开始,只有一名听众应该阅读主题。如果我添加到yml文件:#include <iostream> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; const string PATH_IMAGE = "/Users/Kenza/Desktop/Xcode_cpp_opencv/Sos/Sos/Images/img1.jpg"; const int ESC = 27; Point2f findCorrespondingFisheyePoint(int Xe, int Ye, int We, int He, float FOV){ Point2f fisheyePoint; float theta, phi, r; Point3f sphericalPoint; theta = CV_PI * (Xe / ( (float) We ) - 0.5); phi = CV_PI * (Ye / ( (float) He ) - 0.5); sphericalPoint.x = cos(phi) * sin(theta); sphericalPoint.y = cos(phi) * cos(theta); sphericalPoint.z = sin(phi); theta = atan2(sphericalPoint.z, sphericalPoint.x); phi = atan2(sqrt(pow(sphericalPoint.x,2) + pow(sphericalPoint.z,2)), sphericalPoint.y); r = ( (float) We ) * phi / FOV; fisheyePoint.x = (int) ( 0.5 * ( (float) We ) + r * cos(theta) ); fisheyePoint.y = (int) ( 0.5 * ( (float) He ) + r * sin(theta) ); return fisheyePoint; } int main(int argc, char** argv){ Mat fisheyeImage, equirectangularImage; int Wf, Hf; float FOV; int We, He; fisheyeImage = imread(PATH_IMAGE, IMREAD_COLOR); namedWindow("Fisheye Image"); imshow("fisheye Image", fisheyeImage); Wf = fisheyeImage.size().width; Hf = fisheyeImage.size().height; FOV = (180 * CV_PI ) / 180; We = Wf; He = Hf; while (waitKey(0) != ESC){ } equirectangularImage.create(He, We, CV_8UC3); for (int Xe = 0; Xe < We; Xe++){ for (int Ye = 0; Ye < He; Ye++){ Point2f fisheyePoint = findCorrespondingFisheyePoint(Xe, Ye, We, He, FOV); if (fisheyePoint.x >= We || fisheyePoint.y >= He) continue; if (fisheyePoint.x < 0 || fisheyePoint.y < 0) continue; equirectangularImage.at<Vec3b>(Point(Xe, Ye)) = fisheyeImage.at<Vec3b>(fisheyePoint); } } namedWindow("Equirectangular Image"); imshow("Equirectangular Image", equirectangularImage); while (waitKey(0) != ESC){ } imwrite("im2.jpg", equirectangularImage); } ,则它适用于所有侦听器,但是我只需要一个。我添加了:

spring.kafka.consumer.auto-offset-reset: earliest

但是它不起作用,因为在启动时看到打印的设置,所以没有拾取设置:

import static org.apache.kafka.clients.consumer.ConsumerConfig.AUTO_OFFSET_RESET_DOC;
......
@KafkaListener(groupId = "${random.uuid}",
            properties = {AUTO_OFFSET_RESET_DOC + ":earliest"})

任何想法该怎么做?

1 个答案:

答案 0 :(得分:2)

您提供的配置错误,应该是AUTO_OFFSET_RESET_CONFIG而不是AUTO_OFFSET_RESET_DOC

@KafkaListener(groupId = "${random.uuid}",
        properties = {AUTO_OFFSET_RESET_CONFIG + ":earliest"})

或者您可以直接指定属性

@KafkaListener(groupId = "${random.uuid}",
        properties = {"auto.offset.reset = earliest"})

在文档@KafkaListener批注中,有一个名为properties的字段,它接受字符串数组

  

Kafka消费者财产;它们将取代在使用者工厂中定义的具有相同名称的所有属性(如果使用者工厂支持属性覆盖)。

支持的语法

  

键值对支持的语法与为Java属性文件中的条目定义的语法相同:

key=value
key:value
key value
  

group.id和client.id被忽略。