RocketMQ在windows环境下亲自搭建,记录过程步骤,并记录采到的坑
环境:
1.系统Windows
2.环境 JDK1.8、Maven、Git
3.下载rocketmq-all-4.4.0-bin-release(下载链接:https://rocketmq.apache.org/)"
注意:下载binary版本
启动服务:
注意:rocketmq-all-4.4.0-bin-release和jdk1.8.0_191 一定要放在没有空格的目录下
执行如下命令如下图显示:(启动后cmd窗口不能关闭)
1.启动mqnamesrv: start mqnamesrv.cmd
2.启动mqbroker: mqbroker -n localhost:9876 autoCreateTopicEnable=true
编写java的客户端代码: maven工程pom.xml下以来的包
org.apache.rocketmq
rocketmq-client
4.2.0
Producer.java import java.util.Scanner;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
public class Producer {
public static void main(String[] args)
throws MQClientException {
DefaultMQProducer producer = new DefaultMQProducer("my-group");
producer.setNamesrvAddr("localhost:9876");
producer.setInstanceName("rmq-instance");
producer.start();
try {
Message message = new Message("demo-topic", "demo-tag", "这是一条测试消息".getBytes());
producer.send(message);
//注意:下面代码用户手动输入发送消息内容
while (true) {
String text = new Scanner(System.in).next();
Message msg = new Message("demo-topic", // topic
"demo-tag", // tag
text.getBytes() // body
);
SendResult sendResult = producer.send(msg);
}
}
catch (Exception e) {
e.printStackTrace();
}
producer.shutdown();
}
}
Consumer.java import java.util.List;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.message.MessageExt;
public class Consumer {
public static void main(String[] args) {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("my-group");
consumer.setNamesrvAddr("localhost:9876");
consumer.setInstanceName("rmq-instance");
try {
consumer.subscribe("demo-topic", "demo-tag");
consumer.registerMessageListener(new MessageListenerConcurrently()
{
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
ConsumeConcurrentlyContext context) {
for (MessageExt msg : msgs) {
System.out.println(new String(msg.getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
System.out.println("Consumer Started.");
}
catch (MQClientException e) {
e.printStackTrace();
}
}
}
为了更直观的使用RocketMQ,我们本地搭建下管理界面
1.首先下载官方rocketmq-console工程(地址:https://github.com/apache/rocketmq-externals)
下载后修改applicateion.properties文件中端口,本地地址
进入‘\rocketmq-externals\rocketmq-console’文件夹,执行‘mvn clean package -Dmaven.test.skip=true’,编译生成
"编译成功之后,Cmd进入‘target’文件夹,执行‘java -jar rocketmq-console-ng-1.0.0.jar’,启动‘rocketmq-console-ng-1.0.0.jar’。
"
运行:
访问: