RocketMQ
环境搭建
下载二进制包并上传(https://rocketmq.apache.org/download/):
# 1.解压
unzip rocketmq-all-4.9.1-bin-release.zip
# 2.
cd rocketmq-all-4.9.1-bin-release
# 3.启动NameServer
nohup sh bin/mqnamesrv &
查看log:
tail -f ~/logs/rocketmqlogs/namesrv.log
出现以下字样代表成功:
# 4. 启动broker
nohup sh bin/mqbroker -n localhost:9876 &
查看log:
tail -f ~/logs/rocketmqlogs/broker.log
启动后报错:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
runbroker.sh 和 runserver.sh 中分配的内存太大,然后虚拟机的内存不够,因此需求改内存大小:
runserver.sh => JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
runbroker.sh => JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m"
可以通过jps 查看启动是否成功:
创建主题:
sh bin/mqadmin updateTopic -c DefaultCluster -n localhost -t test-topic
创建消费组:
sh bin/mqadmin updateSubGroup -n localhost:9876 -c DefaultCluster -g test-consumer
关闭broker和nameserver:
sh bin/mqshutdown namesrv
sh bin/mqshutdown broker
https://blog.csdn.net/weixin_44981707/article/details/124138939
https://zhuanlan.zhihu.com/p/528956421?utm_id=0
测试发送接收消息
发送消息:
[root@localhost bin]# sh mqadmin sendMessage -n localhost:9876 -t test-topic -p 'Hello MQ'
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap).
RocketMQLog:WARN Please initialize the logger system properly.
#Broker Name #QID #Send Result #MsgId
localhost.localdomain 1 SEND_OK 7F00000105FA4DC639965C69E40C0000
接收消息:
[root@localhost bin]# sh mqadmin consumeMessage -n localhost:9876 -t test-topic -g test-consumer
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap).
RocketMQLog:WARN Please initialize the logger system properly.
MessageQueue [topic=test-topic, brokerName=localhost.localdomain, queueId=7] print msg finished. status=NO_NEW_MSG, offset=0
Consume ok
MSGID: 7F00000106864DC639965C6D8E8B0000 MessageExt [brokerName=localhost.localdomain, queueId=6, storeSize=173, queueOffset=0, sysFlag=0, bornTimestamp=1697640283787, bornHost=/192.168.184.151:53392, storeTimestamp=1697640283796, storeHost=/192.168.184.151:10911, msgId=C0A8B89700002A9F0000000000000214, commitLogOffset=532, bodyCRC=1737736577, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='test-topic', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=1, UNIQ_KEY=7F00000106864DC639965C6D8E8B0000, CLUSTER=DefaultCluster}, body=[72, 101, 108, 108, 111, 32, 77, 81], transactionId='null'}] BODY: Hello MQ
整合spring-boot 发送简单消息:
1.引入依赖:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>${rocketmq-spring-boot-starter-version}</version>
</dependency>
2.配置文件
# nameserver 地址
rocketmq.name-server=192.168.184.151:9876
# 发送着群组
rocketmq.producer.group=producer-group
- 向 test-topic 发送消息
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {MQSpringBootApplication.class})
public class ProducerTest {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Test
public void test1(){
rocketMQTemplate.convertAndSend("test-topic","hello springboot rocketmq");
}
}
整合spring-boot 接收简单消息:
1.引入依赖
2.创建消费者
@Slf4j
@Component
@RocketMQMessageListener(topic = "test-topic",consumerGroup = "${rocketmq.consumer.group}")
public class Consumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
log.info("Receive message:"+message);
}
}
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/17716130.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!