我正在 Spring Boot 应用程序中使用 spring-kaka-2.2.0 编写集成测试,我几乎成功了,我的测试用例仍然返回 true,但在那之后我仍然看到多个错误。
2019-02-21 11:12:35.434 ERROR 5717 --- [ Thread-7] kafka.server.ReplicaManager : [ReplicaManager broker=0] Error while writing to highwatermark file in directory /var/folders/s3/rz83xz3n1j13lgy9mtwkln594g3x0g/T/kafka-1246121392091602645
org.apache.kafka.common.errors.KafkaStorageException: Error while writing to checkpoint file /var/folders/s3/rz83xz3n1j13lgy9mtwkln594g3x0g/T/kafka-1246121392091602645/replication-offset-checkpoint
Caused by: java.io.FileNotFoundException: /var/folders/s3/rz83xz3n1j13lgy9mtwkln594g3x0g/T/kafka-1246121392091602645/replication-offset-checkpoint.tmp (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
测试配置
@EnableKafka
@TestConfiguration
public class KafkaProducerConfigTest {
@Bean
public EmbeddedKafkaBroker embeddedKafkaBroker() {
return new EmbeddedKafkaBroker(1,false,2,"test-events");
}
@Bean
public ProducerFactory<String, Object> producerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, embeddedKafkaBroker().getBrokersAsString());
props.put(ProducerConfig.RETRIES_CONFIG, 0);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class); …Run Code Online (Sandbox Code Playgroud) java apache-kafka spring-boot spring-kafka spring-kafka-test
我有一个Spring Boot应用程序,它使用连接到PostgreSQL数据库spring-data-jpa,这是我的实体,具有近40个字段
现在将实体保存到数据库中,我只是使用studentRepository.save方法
studentRepository.save(new StudentEntity());
Run Code Online (Sandbox Code Playgroud)
DAO实体
@Table
@Entity
public class StudentEntity {
@Id
@Generate( using database sequenece)
private long studentId;
private String studentName;
private String dept;
private String age;
..
..
}
Run Code Online (Sandbox Code Playgroud)
资料库
public interface StudentRepository implements JPARepository<Long, Student> {
}
Run Code Online (Sandbox Code Playgroud)
但是现在我有一个要求,如果表中有任何学生记录,name并且dept我不应该插入新记录,我知道我可以将PostgreSQL ON CONFLICT与本机查询一起使用,但是如果我使用本机查询,则必须在其中指定所有40个字段查询和作为方法参数看起来很丑陋。
有什么办法可以简化它?
本机查询示例
@Query(value = "insert into Users (name, age, email, status) values (:name, :age, :email, :status)", nativeQuery = true)
void insertUser(@Param("name") String name, @Param("age") Integer age, @Param("status") …Run Code Online (Sandbox Code Playgroud) 我有接受请求的控制器LocalDateTime作为查询参数
@GetMapping("test")
public void test(@RequestParam(value = "date", required = false, defaultValue = ?) LocalDateTime date) {
System.out.println("The date is : "+date);
}
Run Code Online (Sandbox Code Playgroud)
我知道我们可以设置String和Integer使用defaultValuein的默认值@RequestParam,但是如何设置默认值LocalDateTime呢?
我在项目中使用的是Spring Kafka,我想在消费者根据键和值消费之前过滤消息。
可能吗?
我创建了一个主题但我没有使用它,但现在我想将它用于另一个应用程序.因此,我想重命名并使用它,而不是创建新的.可能吗?
spring-Kafka-2.1.5我正在与和 一起研究微服务spring-boot-2.0.5
第一个服务将向卡夫卡产生一些消息,第二个服务将消耗它们,在消耗时我遇到了问题
Caused by: java.lang.IllegalArgumentException: The class 'com.service1.model.TopicMessage' is not in the trusted packages: [java.util, java.lang, com.service2.model.ConsumeMessage].
If you believe this class is safe to deserialize, please provide its name. If the serialization is only done by a trusted source, you can also enable trust all (*).
Run Code Online (Sandbox Code Playgroud)
所以从错误消息来看,这是com.service1.model.TopicMessageservice1的序列化模型。但我正在尝试将消息反序列化为com.service2.model.ConsumeMessageservice2 中的模型并遇到此问题
下面是我的配置
@Bean(name = "kafkaConsumerConfig")
public Map<String, Object> kafkaConsumerConfig() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
props.put(ConsumerConfig.CLIENT_ID_CONFIG, clientId); …Run Code Online (Sandbox Code Playgroud) 我有一个 Spring Boot 应用程序,它有一个消费者从一个集群中的主题消费并生成到不同集群中的另一个主题。
现在我正在尝试使用 Spring 嵌入式 Kafka 编写集成测试用例,但遇到了问题KafkaTemplate could not be registered. A bean with that name has already been defined in class path resource
消费级
@Service
public class KafkaConsumerService {
@Autowired
private KafkaProducerService kafkaProducerService;
@KafkaListener(topics = "${kafka.producer.topic}")
public void professor(List<Professor> pro) {
pro.forEach(kafkaProducerService::produce);
}
}
Run Code Online (Sandbox Code Playgroud)
制作人班
@Service
public class KafkaProducerService {
@Value("${kafka.producer.topic}")
private String topic;
@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;
public void produce(Professor pro) {
kafkaTemplate.send(topic,"professor",pro);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试用例中,我想重写KafkaTemplate,以便当我调用kafkaConsumerService.professor其中的方法时Test,应该将数据生成到嵌入式 Kafka 中,并且我应该验证它。 …
java apache-kafka spring-boot spring-kafka spring-kafka-test
我正在开发需要与 PostgresSql 数据库连接的 Spring Boot 应用程序,以从架构TaskReads中的TaskOne表读取一些记录,并将一些数据写入架构TaskWrites中的TaskTwo表,因此我已启用创建功能,如果不存在,它是在职的。hibernate.auto.ddlschemastables
问题
现在的问题是我的,因为我的应用程序只是从TaskReads架构中的TaskOne表读取数据,即使架构和表不存在,我也不想执行任何 ddl 命令。
由于我的应用程序正在将记录插入到TaskWrites架构中的TaskTwo表中,因此我负责创建架构和表(如果不存在)。
仅读取数据的TaskTwo实体
@Entity
@Table(name = "TaskOne", schema = "TaskReads")
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Subselect(value = "")
@Immutable
public class TaskOneEntity {
@Column(name = "task_id")
@Id
private Long taskId;
}
Run Code Online (Sandbox Code Playgroud)
TaskTwo实体将数据写入表中
@Entity
@Table(name = "TaskTwo", schema = "TaskWrites")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Accessors(chain = true)
public class TaskTwoEntity {
@Column(name = "task_id") …Run Code Online (Sandbox Code Playgroud) 我有一个连接到PostgreSQL数据库的Spring Boot应用程序。DAO层是使用Hibernate和实现的,JPA并auto-ddl启用了它,以便Hibernate负责创建表
今天突然,我的朋友要我将其中一种列类型更改BigInteger为String,然后我说这是不可能的,因为该列中已经填充了数据,并且休眠状态不允许
现在他告诉休眠状态是不利的,我们还讨论了公司是否根据生产需求更改列定义?
题
java ×9
spring-boot ×6
apache-kafka ×4
spring-kafka ×4
spring ×3
hibernate ×2
postgresql ×2
jpa ×1