使用kafka Producer和C#Consumer的Spring Boot proyect(Jhipster)

时间:2019-06-27 17:35:41

标签: java c# spring-boot jhipster spring-kafka

我在这种情况下使用A Jhipster kafka proyect

Greting.java

  package com.nunsys.lupetime.messaging;

public class Greeting {
    private String message;

    public Greeting() {
    }

    public String getMessage() {
        return message;
    }

    public Greeting setMessage(String message) {
        this.message = message;
        return this;
    }
}

ProducerChannel.java

public interface ProducerChannel {

    String CHANNEL = "messageChannel";

    @Output
    MessageChannel messageChannel();
}

ConsumerChannel.java

public interface ConsumerChannel {

    String CHANNEL = "subscribableChannel";

    @Input
    SubscribableChannel subscribableChannel();
}

ProducerResource.java

@RestController
@RequestMapping("/api")
public class ProducerResource{

    private MessageChannel channel;

    public ProducerResource(ProducerChannel channel) {
        this.channel = channel.messageChannel();
    }

    @GetMapping("/greetings/{count}")
    @Timed
    public void produce(@PathVariable int count) {
        while(count > 0) {
            channel.send(MessageBuilder.withPayload(new Greeting().setMessage("Kafka funciona!: " + count)).build());
            count--;
        }
    }

} ConsumerService.java

@Service
public class ConsumerService {

    private final Logger log = LoggerFactory.getLogger(ConsumerService.class);


    @StreamListener(ConsumerChannel.CHANNEL)
    public void consume(Greeting greeting) {
        log.info("Mensaje recibido: {}.", greeting.getMessage());
    }
}

以JHipster kafka为例

所有这些都有效,当我通过邮递方式将任何东西发送到http://localhost:8080/api/greetings/2时(例如),它都可以工作并显示在控制台中。

但是,现在,我想在C#.NET控制台应用程序中创建一个侦听器,以重现与Java控制台相同的内容,我试图做到这一点:

using KafkaNet;
using KafkaNet.Model;
using System;
using System.Text;

namespace kafka
{
    class Program
    {
        static void Main(string[] args)
        {
            var options = new KafkaOptions(new Uri("http://localhost:9092"),
               new Uri("http://localhost:9092"));
            var router = new BrokerRouter(options);
            var consumer = new KafkaNet.Consumer(new ConsumerOptions("",
               new BrokerRouter(options)));

            //Consume returns a blocking IEnumerable (ie: never ending stream)
            foreach (var message in consumer.Consume())
            {
                 Console.WriteLine("Response: P{0},O{1} : {2}",
                   message.Meta.PartitionId, message.Meta.Offset,
                   Encoding.UTF8.GetString(message.Value));
            }
        }
    }
}

但是我无法显示该消息,从字面上我什么也收不到。有人知道我在做什么错吗?这是我第一次使用C#控制台应用程序。

谢谢!

0 个答案:

没有答案