Я пытаюсь запустить пример кода Kafka в среде с поддержкой Unity, и по этой причине я создал потребитель клиент (код приведен ниже).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Confluent.Kafka;
using Confluent.Kafka.Serialization;
using System.Text;
public class KafkaConsumer : MonoBehaviour
{
// Use this for initialization
void Start ()
{
/*
* The consumer application will then pick the messages from the same topic and write them to console output.
* The process to create the consumer application is also very simple.
*/
var config = new Dictionary<string, object>
{
{ "group.id","JavaInUseGroup" },
{ "bootstrap.servers", "localhost:9092" },
{ "enable.auto.commit", "false" }
};
using (var consumer = new Consumer<Null, string>(config, null, new StringDeserializer(Encoding.UTF8)))
{
consumer.Subscribe(new string[] { "javainuse-topic" });
consumer.OnMessage += (_, msg) =>
{
//Console.WriteLine($"Topic: {msg.Topic} Partition: {msg.Partition} Offset :{msg.Offset} {msg.Value}");
Debug.Log($"Topic: {msg.Topic} Partition: {msg.Partition} Offset :{msg.Offset} {msg.Value}");
consumer.CommitAsync(msg);
};
while (true)
{
consumer.Poll(100);
}
}
}
}
Чтобы выполнить приведенный выше пример кода, я также добавил confluent.Kafka dll
в папку с активами моего проекта.но всякий раз, когда я запускаю мою игру «Unity», она выдает ошибку : Win32Exception : указанный модуль не может быть найден.
Rethrow as InvalidOperationException: Ошибка при загрузке librdkafka.dll или его зависимостейиз активов / librdkafka.dll.Убедитесь, что каталог существует, если нет, проверьте процесс развертывания.Вы также можете загрузить библиотеку и ее зависимости самостоятельно перед любым вызовом Confluent.Kafka Confluent.Kafka.Impl.LibRdKafka.Initialize (System.String userSpecifiedPath) (по адресу <700d5bbe3b974ce5aed001c82b789f6a>: 0) Confluent.Uafka.System.Collections.Generic.IEnumerable 1[T] config) (at
<700d5bbe3b974ce5aed001c82b789f6a>:0)
Confluent.Kafka.Consumer
2 [TKey, TValue] .. ctor (System.Collections.Generic.IEnumerable 1[T] config,
Confluent.Kafka.Serialization.IDeserializer
1 [T] keyDeserializer, Confluent.Kafka.Serialization.IDeserializer`1 [T] valueDeserializer)(at <700d5bbe3b974ce5aed001c82b789f6a>: 0) KafkaConsumer.Start () (at Assets / KafkaConsumer.cs: 26)
Поскольку ошибка указывает, что существует проблема зависимости, поэтому я также скопировал эти dll в активыПапка / librdkafka / x64
- librdkafka
librdkafkacpp
msvcr120
- zlib
Теперь проблема в том, что мой проект зависает всякий раз, когда я пытаюсь его воспроизвести.
Помните: я загрузил все эти dll через nuget в vs 2017. Затем я приношу этидлл инто единство.