生产者和消费者仅在1个端口上工作

时间:2019-01-07 21:02:13

标签: apache-kafka kafka-consumer-api

我只在配置中更改了日志和Zookeeper数据的路径。

正在运行的动物园管理员:

    zookeeper-server-start.bat D:\__programs\kafka_2.12-2.1.0\config\zookeeper.properties

正在运行卡夫卡:

    kafka-server-start.bat D:\__programs\kafka_2.12-2.1.0\config\server.properties

正在运行的消费者:

    kafka-console-consumer.bat -bootstrap-server localhost:2181 -topic mytopic

正在运行的制作人:

    kafka-console-producer.bat -broker-list localhost:9092 -topic mytopic

因此,消费者只有在与生产者位于同一端口(9092)上时,才能获取消息。

这是什么问题?

2 个答案:

答案 0 :(得分:0)

Bootstrap服务器和代理列表,两者都应指向相同的

由于您是在localhost:9092上生成事件,因此应该在使用者中使用以下内容:

kafka-console-producer.bat --broker-list localhost:9092 --topic mytopic

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic mytopic

P.S。 通常将2181端口分配给Zookeeper进程。这里localhost:2181是指Zookeeper。

答案 1 :(得分:0)

消费者和生产者都是Kafka服务器的客户端,因此它们都可以使用与我们在server.properties文件中配置为客户端端口的端口相同的端口。

public class PartialTintedRoundedRectLinearLayout extends LinearLayout { Context ctx; RectF topPartitionRect, botPartitionRect; RectF topBandAidRect, botBandAidRect; Paint bgTopPaint, bgBotPaint; int defaultCornerRadius; float material30sdp; public PartialTintedRoundedRectLinearLayout(Context c) { super(c); init(c); } public PartialTintedRoundedRectLinearLayout(Context c, AttributeSet a) { super(c, a); init(c); } public PartialTintedRoundedRectLinearLayout(Context c, AttributeSet a, int dsAttr) { super(c, a, dsAttr); init(c); } private void init(Context c) { setWillNotDraw(false); ctx = c; defaultCornerRadius = (int)(20 * ctx.getResources().getDisplayMetrics().density); material30sdp = ctx.getResources().getDimension(R.dimen._30sdp); bgTopPaint = new Paint(); bgTopPaint.setColor(ContextCompat.getColor(ctx, R.color.blue_700)); bgBotPaint = new Paint(); bgBotPaint.setColor(ContextCompat.getColor(ctx, R.color.blue_500)); getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { topPartitionRect = new RectF(0, 0, getWidth(), material30sdp); topBandAidRect = new RectF(0, defaultCornerRadius, getWidth(), material30sdp); botPartitionRect = new RectF(0, material30sdp, getWidth(), getHeight()); botBandAidRect = new RectF(0, material30sdp, getWidth(), getHeight() - defaultCornerRadius); invalidate(); getViewTreeObserver().removeOnGlobalLayoutListener(this); } }); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRoundRect(topPartitionRect, defaultCornerRadius, defaultCornerRadius, bgTopPaint); canvas.drawRoundRect(botPartitionRect, defaultCornerRadius, defaultCornerRadius, bgBotPaint); canvas.drawRect(topBandAidRect, bgTopPaint); canvas.drawRect(botBandAidRect, bgBotPaint); } } 文件中使用以下任一参数配置了端口

  • advertised.listeners
  • 听众

取决于配置和协议,使用者和生产者可以使用多个端口。 您可以找到代理参数here

的详细信息