我在这种情况下使用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#控制台应用程序。
谢谢!