我使用配置文件来确定要使用哪个数据连接器(dev=h2,prod=mySQL)。我正在尝试使用
spring.sql.init.schema-locations=
Run Code Online (Sandbox Code Playgroud)
要将位置设置为具有活动配置文件中的属性的相关路径,但我不断收到:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]:
Invocation of init method failed; nested exception is java.lang.IllegalStateException: No schema scripts found at location './database/h2/schema-h2.sql'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.15.jar:5.3.15]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.15.jar:5.3.15]
Run Code Online (Sandbox Code Playgroud)
无论我将该属性指向何处,都会出现相同的错误。
是否有任何其他特殊语法来声明此属性的资源下的哪个文件或哪个目录?当我在 Idea 中编辑此属性时,自动完成功能会愉快地显示文件夹/文件结构,但 Spring 看不到我所指向的内容!
我正在尝试设置一个Spark Streaming简单应用程序,它将从Kafka主题中读取消息.
经过大量工作后,我处于这个阶段,但得到下面显示的例外情况.
码:
public static void main(String[] args) throws Exception {
String brokers = "my.kafka.broker" + ":" + "6667";
String topics = "MyKafkaTopic";
// Create context with a 2 seconds batch interval
SparkConf sparkConf = new SparkConf().setAppName("StreamingE")
.setMaster("local[1]")
;
JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(2));
Set<String> topicsSet = new HashSet<>(Arrays.asList(topics.split(",")));
Map<String, String> kafkaParams = new HashMap<>();
kafkaParams.put("metadata.broker.list", brokers);
System.out.println("Brokers: " + brokers);
// Create direct kafka stream with brokers and topics
JavaPairInputDStream<String, String> messages = KafkaUtils.createDirectStream(
jssc,
String.class,
String.class, …Run Code Online (Sandbox Code Playgroud) Lombok Builder 是否使用反射?
或者它还添加了必要的代码预编译?
在循环中创建和使用线程的正确方法是什么?
如果我想处理一百万个项目,我会创建一个循环来做到这一点.因此,为了提高效率,我将使其成为多线程并将每个项目分配给一个线程.假设我创建了五个线程来处理这个问题.如何将工作分配给线程?
如果一个线程有一个较小的项目要处理,那么它可以自由处理另一个 - 如何将循环中的下一个项目分配给该线程呢?
我是否在循环外创建线程然后在其中使用它们?
这是我正在研究的一个例子 - 它缺少使用对象的创建,只使用两个线程,但我认为这里的人很聪明,知道我的意思:)
public class App
{
public static void main( String[] args )
{
App a = new App();
a.doTest();
}
private void doTest() {
Count c = new Count(21);
Count c2 = new Count(7);
Thread t = new Thread(c);
Thread t2 = new Thread(c2);
t.start();
t2.start();
for (int f = 0; f < 10; f++) {
//here - how do I select which thread to send the work to?
// ?????.processThis(nextObject); //how …Run Code Online (Sandbox Code Playgroud) 我正在使用 Kafka 发送生产和消费消息。
制作很好,与<String, ByteArray>制作人合作。
消费时,我使用下面的代码(取自示例),但我得到的每条记录只有 8 个字节(代码下方的示例输出)。
有没有办法让消费者可以简单地将整个消息作为一个字节数组?
代码:
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
KafkaConsumer<String, byte[]> consumer = new KafkaConsumer<String, byte[]>(props);
consumer.subscribe(Arrays.asList(topic));
int i = 0;
while (true) {
ConsumerRecords<String, byte[]> records = consumer.poll(100);
for (ConsumerRecord<String, byte[]> record : records)
System.out.printf("offset = %d, key = %s, value = %s\n", record.offset(), record.key(), record.value());
}
Run Code Online (Sandbox Code Playgroud)
System.out 的输出:
offset = 1773133, key = 105906453, value = [B@b8eff39
offset = 1773134, key = 105906453, value = [B@7bb1504
offset = 1773135, key = …Run Code Online (Sandbox Code Playgroud) java ×3
apache-kafka ×1
bytearray ×1
lombok ×1
reflection ×1
schema ×1
spring-boot ×1
sql ×1
threadpool ×1