windows中启动RocketMQ

准备

下载安装包

RocketMQ二进制包

conf目录下的rmq-proxy.json文件添加端口
{
  "grpcserverPort":8082,
  "rocketMQClusterName": "DefaultCluster"
}
启动服务

先cmd到安装包的bin目录下

  1. 启动 mqnamesrv.cmd(新窗口不要关)
start mqnamesrv.cmd
  1. 启动 mqbroker.cmd(新窗口不要关)
start mqbroker.cmd -n localhost:9876
  1. 5.0+需要启动mqproxy.cmd(当前窗口不要关)
mqproxy.cmd -n 127.0.0.1:9876 -pc ../conf/rmq-proxy.json

以上服务都启动成功,可以通过代码去测试消息是发送和接收

代码(Java)

  1. 在pom.xml引入依赖:Maven Central: org.apache.rocketmq:rocketmq-client-java (sonatype.com)
  2. 通过mqadmin创建Topic (niHao:名称)
mqadmin.cmd updatetopic -n localhost:9876 -t niHao -c DefaultCluster
  1. 发消息demo
import org.apache.rocketmq.client.apis.ClientConfiguration;  
import org.apache.rocketmq.client.apis.ClientConfigurationBuilder;  
import org.apache.rocketmq.client.apis.ClientException;  
import org.apache.rocketmq.client.apis.ClientServiceProvider;  
import org.apache.rocketmq.client.apis.message.Message;  
import org.apache.rocketmq.client.apis.producer.Producer;  
import org.apache.rocketmq.client.apis.producer.SendReceipt;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
import java.time.LocalDateTime;  
import java.time.format.DateTimeFormatter;  
   
public class ProducerExample {  
private static final Logger logger = LoggerFactory.getLogger(ProducerExample.class);  
  
public static void main(String[] args) throws ClientException {  
// 接入点地址,需要设置成Proxy的地址和端口列表,一般是xxx:8080;xxx:8081。  
String endpoint = "localhost:8082";  
// 消息发送的目标Topic名称,需要提前创建。  
String topic = "niHao";  
ClientServiceProvider provider = ClientServiceProvider.loadService();  
ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(endpoint);  
ClientConfiguration configuration = builder.build();  
// 初始化Producer时需要设置通信配置以及预绑定的Topic。  
Producer producer = provider.newProducerBuilder()  
.setTopics(topic)  
.setClientConfiguration(configuration)  
.build();  
// 普通消息发送。  
Message message = provider.newMessageBuilder()  
.setTopic(topic)  
// 设置消息索引键,可根据关键字精确查找某条消息。  
.setKeys("messageKey")  
// 设置消息Tag,用于消费端根据指定Tag过滤消息。  
.setTag("messageTag")  
// 消息体。  
.setBody("messageBody".getBytes())  
.build();  
try {  
  
for (int i = 0; i < 10; i++) {  
// 发送消息,需要关注发送结果,并捕获失败等异常。  
Thread.sleep(2000);  
SendReceipt sendReceipt = producer.send(message);  
logger.info("发送消息成功, 时间:{}, 内容:{}",LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")),sendReceipt.getMessageId());  
}  
} catch (ClientException e) {  
logger.error("发送消息失败", e);  
} catch (InterruptedException e) {  
throw new RuntimeException(e);  
}  
// producer.close();  
}  
}
  1. 消费消息demo
import java.io.IOException;  
import java.time.LocalDateTime;  
import java.time.format.DateTimeFormatter;  
import java.util.Collections;  
import org.apache.rocketmq.client.apis.ClientConfiguration;  
import org.apache.rocketmq.client.apis.ClientException;  
import org.apache.rocketmq.client.apis.ClientServiceProvider;  
import org.apache.rocketmq.client.apis.consumer.ConsumeResult;  
import org.apache.rocketmq.client.apis.consumer.FilterExpression;  
import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;  
import org.apache.rocketmq.client.apis.consumer.PushConsumer;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  

public class PushConsumerExample {  
private static final Logger logger = LoggerFactory.getLogger(PushConsumerExample.class);  
 
public static void main(String[] args) throws ClientException, IOException, InterruptedException {  
final ClientServiceProvider provider = ClientServiceProvider.loadService();  
// 接入点地址,需要设置成Proxy的地址和端口列表,一般是xxx:8081;xxx:8081。  
String endpoints = "localhost:8082";  
ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()  
.setEndpoints(endpoints)  
.build();  
// 订阅消息的过滤规则,表示订阅所有Tag的消息。  
String tag = "*";  
FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);  
// 为消费者指定所属的消费者分组,Group需要提前创建。  
String consumerGroup = "YourConsumerGroup";  
// 指定需要订阅哪个目标Topic,Topic需要提前创建。  
String topic = "niHao";  
// 初始化PushConsumer,需要绑定消费者分组ConsumerGroup、通信参数以及订阅关系。  
PushConsumer pushConsumer = provider.newPushConsumerBuilder()  
.setClientConfiguration(clientConfiguration)  
// 设置消费者分组。  
.setConsumerGroup(consumerGroup)  
// 设置预绑定的订阅关系。  
.setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))  
// 设置消费监听器。  
.setMessageListener(messageView -> {  
// 处理消息并返回消费结果。  
logger.info("消费消息成功, 时间:{}, 内容:{}", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), messageView.getMessageId());  
return ConsumeResult.SUCCESS;  
})  
.build();  
Thread.sleep(Long.MAX_VALUE);  
// 如果不需要再使用 PushConsumer,可关闭该实例。  
// pushConsumer.close();  
}  
}

完结

可根据官网去尝试不同的消费类型:RocketMQ (apache.org)

要在Windows 10上启动RocketMQ,您需要执行以下步骤: 1. 下载RocketMQ的发布包。您可以在Apache RocketMQ的官方网站上下载适用于Windows的发布包。根据引用,您可以从Apache RocketMQ的发布页面下载rocketmq-all-4.2.0-bin-release和rocketmq-externals-release-rocketmq-console-1.0.0两个文件。 2. 解压缩下载的发布包。找到解压后的文件夹,确保您已准备好在后续步骤使用它。 3. 启动RocketMQ的NameServer。打开命令提示符或PowerShell,并导航到解压后的RocketMQ文件夹。然后,执行以下命令启动NameServer: ``` .\bin\mqnamesrv.cmd ``` 请注意,这是在Windows系统上启动NameServer的命令。如果您使用的是不同的操作系统,请参考相应的文档。 4. 启动RocketMQ的Broker。在同一个命令提示符或PowerShell窗口,执行以下命令启动Broker: ``` .\bin\mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true ``` 这将启动一个名为Broker的RocketMQ实例,并将其连接到本地运行的NameServer。请注意,这里的命令假设您正在本地运行RocketMQ,并且NameServer的地址为localhost:9876。如果您的配置不同,请相应地更改命令。 5. 启动RocketMQ的控制台(可选)。如果需要使用RocketMQ的控制台,请在解压后的RocketMQ文件夹找到rocketmq-externals-release-rocketmq-console-1.0.0.jar文件,并执行以下命令启动控制台: ``` java -jar rocketmq-externals-release-rocketmq-console-1.0.0.jar ``` 这将启动RocketMQ的控制台,并通过默认端口访问,通常是http://localhost:8080。 这些是在Windows 10上启动RocketMQ所需的基本步骤。根据您的配置和需求,可能还有其他步骤或配置项。请参考RocketMQ的官方文档以获取更详细的信息和指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Windows下的RocketMQ启动](https://blog.csdn.net/qq_64872360/article/details/126432287)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值