Я пытаюсь создать приложения производителя и потребителя, используя концентратор сообщений IBM. Для производителя я использую следующий код:
var config = new Dictionary<string, object> {
{ "bootstrap.servers", brokerList },
{ "group.id", "simple-csharp-producer" },
{ "client.id", "some string for id such as FR45fHth..." },
{"api.version.request","true" },
{"sasl.mechanisms","PLAIN" },
{"sasl.username","the first 16 charachters of the client.id" },
{"sasl.password","the other characters left" }
};
using (var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
{
....
}
для потребителя я использую аналогичные свойства конфигурации.
остальная часть кода для потребителя:
using (var consumer = new Consumer<Null, string>(config, null, new StringDeserializer(Encoding.UTF8)))
{
consumer.Assign(new List<TopicPartitionOffset> { new TopicPartitionOffset(topics, 0, 0) });
while (true)
{
Message<Null, string> msg;
if (consumer.Consume(out msg, TimeSpan.FromSeconds(1)))
{
Console.WriteLine($"Topic: {msg.Topic} Partition: {msg.Partition} Offset: {msg.Offset} {msg.Value}");
}
}
}
и для производителя:
using (var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
{
Console.WriteLine($"{producer.Name} producing on {topicName}. q to exit.");
string text;
while ((text = Console.ReadLine()) != "q")
{
var deliveryReport = producer.ProduceAsync(topicName, null, text);
deliveryReport.ContinueWith(task =>
{
Console.WriteLine($"Partition: {task.Result.Partition}, Offset: {task.Result.Offset}");
});
}
// Tasks are not waited on synchronously (ContinueWith is not synchronous),
// so it's possible they may still in progress here.
producer.Flush(Convert.ToInt32(TimeSpan.FromSeconds(10)));
Во всяком случае, это не сработало, нет никаких признаков отправки или получения чего-либо... чего не хватает? или что я могу использовать для его работы?
Журналы, которые я получаю:
*sasl_ssl://kafka03-prod02.messagehub.services.eu-gb.bluemix.net:9093/bootstrap: не удалось инициализировать аутентификацию SASL: механизм SASL «PLAIN» не поддерживается на платформе
*1/1 брокеры не работают