- 建立映射文件夹
cd ~/docker
mkdir -p rocketmq/namesrv/logs
mkdir -p rocketmq/namesrv/store
mkdir -p rocketmq/broker/logs
mkdir -p rocketmq/broker/store
mkdir -p rocketmq/broker/conf
- 创建broker配置文件
touch rocketmq/broker/conf/broker.conf
vim rocketmq/broker/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = xxx.xxx.xxx.xxx
- 拉取rocketmq与rocketmq-console镜像
docker pull rocketmqinc/rocketmq:4.3.2
dokker pull styletang/rocketmq-console-ng
- 执行docker启动命令
docker run -d --restart=always --name rocketmq_name_server \
-p 9876:9876 \
-v ~/docker/rocketmq/namesrv/logs:/root/logs \
-v ~/docker/rocketmq/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
-e "autoCreateTopicEnable=true" \
rocketmqinc/rocketmq:4.3.2 sh mqnamesrv
docker run -d --restart=always --name rocketmq_broker --link rocketmq_name_server:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v ~/docker/rocketmq/data/broker/logs:/root/logs \
-v ~/docker/rocketmq/data/broker/store:/root/store \
-v ~/docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.3.2/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq:4.3.2 sh mqbroker -c /opt/rocketmq-4.3.2/conf/broker.conf
docker run --restart=always \
--name rocketmq_console \
--link rocketmq_name_server:namesrv \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9001:8080 \
-d styletang/rocketmq-console-ng
- springBoot引入rocketMQ
rocketmq:
name-server: localhost:9876
producer:
group: TestGroup
@Component
@RocketMQMessageListener(consumerGroup = "TestGroup", topic = "test")
public class SpringBootConsumer implements RocketMQListener {
@Override
public void onMessage(Object message) {
System.out.println("Received message : "+ message);
}
}
- rocketMQ工具类
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class RocketMqHelper {
private static final Logger LOG = LoggerFactory.getLogger(RocketMqHelper.class);
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void asyncSend(Enum topic, Message<?> message) {
asyncSend(topic.name(), message, getDefaultSendCallBack());
}
public void asyncSend(Enum topic, Message<?> message, SendCallback sendCallback) {
asyncSend(topic.name(), message, sendCallback);
}
public void asyncSend(String topic, Message<?> message) {
rocketMQTemplate.asyncSend(topic, message, getDefaultSendCallBack());
}
public void asyncSend(String topic, Message<?> message, SendCallback sendCallback) {
rocketMQTemplate.asyncSend(topic, message, sendCallback);
}
public void asyncSend(String topic, Message<?> message, SendCallback sendCallback, long timeout) {
rocketMQTemplate.asyncSend(topic, message, sendCallback, timeout);
}
public void asyncSend(String topic, Message<?> message, SendCallback sendCallback, long timeout, int delayLevel) {
rocketMQTemplate.asyncSend(topic, message, sendCallback, timeout, delayLevel);
}
public void syncSendOrderly(Enum topic, Message<?> message, String hashKey) {
syncSendOrderly(topic.name(), message, hashKey);
}
public void syncSendOrderly(String topic, Message<?> message, String hashKey) {
LOG.info("发送顺序消息,topic:" + topic + ",hashKey:" + hashKey);
rocketMQTemplate.syncSendOrderly(topic, message, hashKey);
}
public void syncSendOrderly(String topic, Message<?> message, String hashKey, long timeout) {
LOG.info("发送顺序消息,topic:" + topic + ",hashKey:" + hashKey + ",timeout:" + timeout);
rocketMQTemplate.syncSendOrderly(topic, message, hashKey, timeout);
}
private SendCallback getDefaultSendCallBack() {
return new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
LOG.info("---发送MQ成功---");
}
@Override
public void onException(Throwable throwable) {
LOG.error("---发送MQ失败---"+throwable.getMessage(), throwable.getMessage());
}
};
}
@PreDestroy
public void destroy() {
LOG.info("---RocketMq助手注销---");
}
}