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
  1. 向 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);
    }
}

posted @   chuangzhou  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示