Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
Java 我们如何在Android应用程序中创建卡夫卡制作人?_Java_Android_Apache Kafka - Fatal编程技术网

Java 我们如何在Android应用程序中创建卡夫卡制作人?

Java 我们如何在Android应用程序中创建卡夫卡制作人?,java,android,apache-kafka,Java,Android,Apache Kafka,我对ApacheKafka还不熟悉,我正试图在android studio上使用它,以便使用来自的代码向位于pc上的服务器生成数据 渐变代码: apply plugin: 'com.android.application' android { packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/LIC

我对ApacheKafka还不熟悉,我正试图在android studio上使用它,以便使用来自的代码向位于pc上的服务器生成数据

渐变代码:

apply plugin: 'com.android.application'

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 14
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.android.support:multidex:1.0.1'
    implementation 'io.socket:socket.io-client:0.2.1'
    implementation 'org.apache.kafka:kafka-clients:0.10.0.0'
    implementation 'org.apache.kafka:kafka-streams:0.10.0.0'




}
这是我的主要活动:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.os.StrictMode;
import android.widget.Toast;


import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.LongSerializer;
import org.apache.kafka.common.serialization.StringSerializer;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.WeakHashMap;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Properties props = new Properties();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, LongSerializer.class.getName());
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        KafkaProducer<String, String> producer = new KafkaProducer<String, String>(props);
        for (int i = 0; i < 1000; i++) {
            ProducerRecord<String, String> data;
            if (i % 2 == 0) {
                data = new ProducerRecord<String, String>("even", 0, Integer.toString(i), String.format("%d is even", i));
            } else {
                data = new ProducerRecord<String, String>("odd", 0, Integer.toString(i), String.format("%d is odd", i));
            }
            producer.send(data);
            try {
                Thread.sleep(1L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        producer.close();


        }


    }
package com.example.myapplication;
导入androidx.appcompat.app.appcompat活动;
导入android.net.Uri;
导入android.os.Bundle;
导入android.os.Looper;
导入android.os.StrictMode;
导入android.widget.Toast;
导入org.apache.kafka.clients.producer.KafkaProducer;
导入org.apache.kafka.clients.producer.ProducerConfig;
导入org.apache.kafka.clients.producer.ProducerRecord;
导入org.apache.kafka.common.serialization.lonserializer;
导入org.apache.kafka.common.serialization.StringSerializer;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.ObjectOutputStream;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.io.PrintWriter;
导入java.net.Socket;
导入java.net.URI;
导入java.net.URISyntaxException;
导入java.util.List;
导入java.util.Map;
导入java.util.Properties;
导入java.util.WeakHashMap;
导入java.util.concurrent.Future;
导入java.util.concurrent.TimeUnit;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Properties props=新属性();
put(ProducerConfig.BOOTSTRAP\u SERVERS\u CONFIG,“localhost:9092”);
put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,longeserializer.CLASS.getName());
put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.CLASS.getName());
卡夫卡制作人=新卡夫卡制作人(道具);
对于(int i=0;i<1000;i++){
生产记录数据;
如果(i%2==0){
数据=新产品记录(“偶数”,0,整数.toString(i),String.format(“%d为偶数”,i));
}否则{
数据=新产品记录(“奇数”,0,整数.toString(i),String.format(“%d为奇数”,i));
}
生产者。发送(数据);
试一试{
睡眠(1L);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
producer.close();
}
}
以下是错误:

基本上,这些行中清楚地显示了错误:

 java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/management/ManagementFactory;
        at org.apache.kafka.common.utils.AppInfoParser.unregisterAppInfo(AppInfoParser.java:65)
        at org.apache.kafka.clients.producer.KafkaProducer.close(KafkaProducer.java:699)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:333)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:188)
java.lang.NoClassDefFoundError:解析失败:Ljava/lang/management/ManagementFactory;
位于org.apache.kafka.common.utils.AppInfoParser.unregisterAppInfo(AppInfoParser.java:65)
位于org.apache.kafka.clients.producer.KafkaProducer.close(KafkaProducer.java:699)
位于org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:333)
位于org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:188)
它不断崩溃,无法识别问题。我试图将multidex设置为true或false,但出现了相同的错误。我还尝试使用maven依赖项,但错误仍然是一样的


我错过了什么?你能帮忙吗?你不会的。这是不安全的。您将向Web服务发送请求,它将向Kafka发送数据。其他任何东西都需要你的卡夫卡服务器公开应用程序中的身份验证信息,然后基本上对任何人开放。

我发现我们无法在android中创建卡夫卡。最好为kafka创建一个公开REST端点的应用程序,稍后可以在android应用程序中调用。 您可以用任何语言或框架创建它,我已经在SpringBoot中完成了,它工作得很好

使用RESTful端点的Android应用程序为kafka服务公开

注意:
localhost:9092
不是卡夫卡服务器地址如果你在安卓系统上运行它,它应该是安卓设备本身