我正在使用 Kafka 并按照本教程进行操作 ( https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example )
经过一些调整后,代码可以编译,一切都可以正常运行。我的问题是我试图利用 Kafka 服务器发送给我的字节数组来进行一些处理。如果我使用默认代码,一切正常,字节数组将转换为字符串并显示在屏幕上。如果我尝试读取字节数组并将其分配给一个字符串,以便我可以将其显示到屏幕上,然后解析它,则什么也不会发生。
it.next().message() returns a byte array
默认代码:
ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
while (it.hasNext())
System.out.println("Thread " + m_threadNumber + ": " + new String(it.next().message()));
我的代码损坏了:
ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
String msg= "";
while (it.hasNext())
msg = new String(it.next().message());
System.out.println("Thread " + m_threadNumber + ": " + msg);
有人能告诉我为什么我不能将字节数组分配给我的字符串吗?当然,如何修复我的故障?
我查看了:
Convert byte to string in Java
但它们似乎都不适用,它们都尝试在字符串初始化时将字节数组分配给字符串,而我在这里不能这样做。
最佳答案
您缺少大括号,因此您的 println 仅在最后一次执行。试试这个:
ConsumerIterator<byte[], byte[]> it = m_stream.iterator();
String msg= "";
while (it.hasNext())
{
msg = new String(it.next().message());
System.out.println("Thread " + m_threadNumber + ": " + msg);
}
关于Java byte[] 到 String 分配给 String 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615298/