我正在尝试使用自定义java类将来自oracle的消息直接发布到kafka代理,因为我在oracle中上载了所需的库,并使用oracle function/procedure调用java函数。基本的java函数工作正常,但kafka正在初始化并用于抛出未捕获异常的函数。即使我把整个函数体放在try-catch块中,但仍然没有得到定制的异常作为消息。
我有oracle 12c,它有jvm版本1.8。
此消息在java函数调用时在oracle sql提示符上弹出(java.lang.noclassdeffound错误)。
我为我的自定义类创建了一个jar文件,并将其与受人尊敬的库一起上传到oracledb。我用下面的命令上传了库文件。
loadjava -u <user>/<Password>@DB -resolve <library>.jar
请告诉我如何使Kafka生产者初始化,并开始发送消息,从甲骨文内部
如何调试oracledb中加载的java函数。
我的自定义类如下所示
public class KafkaPublisher {
static ProducerRecord<String, String> PR = null;
static Producer<String, String> producer = null;
static Properties prop = new Properties();
public static void init() {
prop.put("bootstrap.servers", "111.11.11.11:9092");
prop.put("acks", "1");
prop.put("retries", "0");
prop.put("batch.size", "16384");
prop.put("linger.ms", "1");
prop.put("buffer.memory", "33554432");
prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
}
public static String push(String data) {
String response = "No responce";
init();
try {
producer = new KafkaProducer<String, String>(prop);
PR = new ProducerRecord<String, String>("topic1", data);
Future<RecordMetadata> future = producer.send(PR);
RecordMetadata rMetaData = future.get();
response = "Current Offset: " + rMetaData.offset();
} catch (Exception e) {
response = "Message: " + e.getMessage() + " Cause: " + e.getCause();
}
return response;
}
public static String getProperties(String msg) {
return "My message: " + msg + prop.toString();
}
}
函数getproperties(string msg)工作正常,但函数push(string data)不工作。
暂无答案!
目前还没有任何答案,快来回答吧!