下面Windows命令需要把cmd路径切换到bin/windows下。
而Linux命令只需要在控制台切换到bin目录下即可。
下面都以Windows下的操作为例,在Linux下也是一样的。

kafka-topics.bat # Windows
kafka-topics.sh # Linux

输入以上命令就可以看到主题命令可以附加哪些参数来执行,参数有很多,这里归纳几个常用的:
| 参数 | 说明 |
|---|---|
| –bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
| –topic | 操作的 topic 名称。 |
| –create | 创建主题。 |
| –delete | 删除主题。 |
| –alter | 修改主题。 |
| –list | 查看所有主题。 |
| –describe | 查看主题详细描述。 |
| –partitions <Integer: # of partitions> | 设置分区数。 |
| –replication-factor <Integer: replication factor> | 设置分区副本。 |
| –config <String: name=value> | 更新系统默认的配置。 |
kafka-topics.bat --bootstrap-server localhost:9092 --list
Kafka默认在9092端口上运行
kafka-topics.bat --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test
--partitions :指定分区数,参数要根据broker数和数据量决定,有几个broker则可以指定几个分区
--replication-factor: 指定副本数,也有根据有几个broker来决定
--topic :指定topic名字
kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test

这里主要注意后面第二排参数的意义即可。
Topic:test:主体的名称是test。
Partition:分区编号是0,代表只有一个分区,编号从0开始
Leader:每个分区多个副本的主节点编号,这个在集群中才会是其它值,这里是单机模式,值等于唯一副本编号
Replicas:副本编号,也是从0开始。
kafka-topics.bat --bootstrap-server localhost:9092 --alter --topic test --partitions 2
注意:分区数只能增加,不能减少
kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic test
kafka-topics.bat --bootstrap-server localhost:9092 --delete --topic test
下面Windows命令需要把cmd路径切换到bin/windows下。

kafka-console-producer.bat
常用参数:
| 参数 | 说明 |
|---|---|
| –bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
| –topic | 操作的 topic 名称。 |
主要就是要说明要连接哪个Kafka服务器或者集群。
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test

此时光标处就可以输入数据,输入的数据会放入本机kafka 服务器test这个主题当中。

kafka-console-consuer.bat
常用参数:
| 参数 | 说明 |
|---|---|
| –bootstrap-server | 连接的 Kafka Broker 主机名称和端口号。 |
| –topic | 操作的 topic 名称。 |
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic test
这些示例都基于上面的主题test来进行操作。
kafka-console-producer.bat --bootstrap-server localhost:9092 --topic test

此时输入一个hello数据然后回车,队列中就加入了一条数据。
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test

发现此时并没有消费到刚才的数据。
就是在刚才的光标下继续输入一个数据,再回车即可。

此时再看消费者,发现消费者已经消费到了Kafka这条数据。

这时候就发现了一个问题,消费者只能消费消费者出现之后的数据,之前的历史数据则不能直接被消费。
如果想要读取历史数据,可以选择把主题中的数据全部读取出来。
kafka-console-consumer.bat --bootstrap-server localhost:9092 --from-beginning --topic test

执行此命令后,再来新的数据,也会被继续消费,就和普通的消费者一样。
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],
如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最
在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa