rocketMQ搭建2m2s集群
程序员文章站
2022-05-24 15:42:53
...
通过docker 搭建2master+2slave的集群
1、server创建容器
#创建server容器nameserver01
docker create -p 9876:9876 --name rmqserver01 -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -e "JAVA_OPTS=-Duser.home=/opt" -v /usr/local/haoke/rmq/rmqserver01/logs:/opt/logs -v /usr/local/haoke/rmq/rmqserver01/store:/opt/store foxiswho/rocketmq:server-4.3.2
#nameserver02
docker create -p 9877:9876 --name rmqserver02 -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -e "JAVA_OPTS=-Duser.home=/opt" -v /usr/local/haoke/rmq/rmqserver02/logs:/opt/logs -v /usr/local/haoke/rmq/rmqserver02/store:/opt/store foxiswho/rocketmq:server-4.3.2
2、创建broker容器
#创建broker容器 master broker01
# 使用host ,对外暴露三个端口
docker create --net host --name rmqbroker01 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -v /usr/local/haoke/rmq/rmqbroker01/broker.conf:/etc/rocketmq/broker.conf -v /usr/local/haoke/rmq/rmqbroker01/logs:/opt/logs -v /usr/local/haoke/rmq/rmqbroker01/store:/opt/store foxiswho/rocketmq:broker-4.3.2
#创建broker容器 master broker02
docker create --net host --name rmqbroker02 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -v /usr/local/haoke/rmq/rmqbroker02/broker.conf:/etc/rocketmq/broker.conf -v /usr/local/haoke/rmq/rmqbroker02/logs:/opt/logs -v /usr/local/haoke/rmq/rmqbroker02/store:/opt/store foxiswho/rocketmq:broker-4.3.2
#创建broker容器 master broker03
docker create --net host --name rmqbroker03 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -v /usr/local/haoke/rmq/rmqbroker03/broker.conf:/etc/rocketmq/broker.conf -v /usr/local/haoke/rmq/rmqbroker03/logs:/opt/logs -v /usr/local/haoke/rmq/rmqbroker03/store:/opt/store foxiswho/rocketmq:broker-4.3.2
#创建broker容器 master broker04
docker create --net host --name rmqbroker04 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms256m -Xmx256m -Xmn256m" -v /usr/local/haoke/rmq/rmqbroker04/broker.conf:/etc/rocketmq/broker.conf -v /usr/local/haoke/rmq/rmqbroker04/logs:/opt/logs -v /usr/local/haoke/rmq/rmqbroker04/store:/opt/store foxiswho/rocketmq:broker-4.3.2
配置文件(目录为创建boker命令对应的目录文件broker.conf)
broker01
# 指向刚刚创建的2个nameserver
namesrvAddr=192.168.142.128:9876;192.168.142.128:9877
#集群的名字,通过名字将不同的服务组建成一个组
brokerClusterName=ItcastCluster
#指定broker的名字,master与slave中的服务名字是一样为一个组
brokerName=broker01
#这里brokerid=0表示该broker为master, 非0表示为slave
brokerId=0
#表示消息数据在服务器上面停留的时间,默认的是72
fileReservedTime=48
#表示在零晨的4点对过期的数据进行清理
deleteWhen=04
#角色(同步双写,异步复制),这里表示同步双写
brokerRole=SYNC_MASTER
#刷盘的方式,这里是异步的刷 盘
flushDiskType=ASYNC_FLUSH
#设置ip,不设置会使用默认的ip,外部不能进行访问
brokerIP1=192.168.142.128
#用户主从之间同步数据的ip
brokerIp2=192.168.142.128
#监听的端口,这里会暴露3个端口,设置的会+1,-2作为另外的两个端口
listenPort=10911
broker02
# 指向刚刚创建的2个nameserver
namesrvAddr=192.168.142.128:9876;192.168.142.128:9877
#集群的名字,通过名字将不同的服务组建成一个组
brokerClusterName=ItcastCluster
#指定broker的名字,master与slave中的服务名字是一样为一个组
brokerName=broker02
#这里brokerid=0表示该broker为master, 非0表示为slave
brokerId=0
#表示消息数据在服务器上面停留的时间,默认的是72
fileReservedTime=48
#表示在零晨的4点对过期的数据进行清理
deleteWhen=04
#角色(同步双写,异步复制),这里表示同步双写
brokerRole=SYNC_MASTER
#刷盘的方式,这里是异步的刷 盘
flushDiskType=ASYNC_FLUSH
#设置ip,不设置会使用默认的ip,外部不能进行访问
brokerIP1=192.168.142.128
#用户主从之间同步数据的ip
brokerIp2=192.168.142.128
#监听的端口,这里会暴露3个端口,设置的会+1,-2作为另外的两个端口
listenPort=10811
broker03
# 指向刚刚创建的2个nameserver
namesrvAddr=192.168.142.128:9876;192.168.142.128:9877
#集群的名字,通过名字将不同的服务组建成一个组
brokerClusterName=ItcastCluster
#指定broker的名字,master与slave中的服务名字是一样为一个组
brokerName=broker01
#这里brokerid=0表示该broker为master, 非0表示为slave
brokerId=1
#表示消息数据在服务器上面停留的时间,默认的是72
fileReservedTime=48
#表示在零晨的4点对过期的数据进行清理
deleteWhen=04
#角色(同步双写,异步复制),这里表示同步双写
brokerRole=SLAVE
#刷盘的方式,这里是异步的刷 盘
flushDiskType=ASYNC_FLUSH
#设置ip,不设置会使用默认的ip,外部不能进行访问
brokerIP1=192.168.142.128
#用户主从之间同步数据的ip
brokerIp2=192.168.142.128
#监听的端口,这里会暴露3个端口,设置的会+1,-2作为另外的两个端口
listenPort=10711
broker04
# 指向刚刚创建的2个nameserver
namesrvAddr=192.168.142.128:9876;192.168.142.128:9877
#集群的名字,通过名字将不同的服务组建成一个组
brokerClusterName=ItcastCluster
#指定broker的名字,master与slave中的服务名字是一样为一个组
brokerName=broker02
#这里brokerid=0表示该broker为master, 非0表示为slave
brokerId=1
#表示消息数据在服务器上面停留的时间,默认的是72
fileReservedTime=48
#表示在零晨的4点对过期的数据进行清理
deleteWhen=04
#角色(同步双写,异步复制),这里表示同步双写
brokerRole=SLAVE
#刷盘的方式,这里是异步的刷 盘
flushDiskType=ASYNC_FLUSH
#设置ip,不设置会使用默认的ip,外部不能进行访问
brokerIP1=192.168.142.128
#用户主从之间同步数据的ip
brokerIp2=192.168.142.128
#监听的端口,这里会暴露3个端口,设置的会+1,-2作为另外的两个端口
listenPort=10611
启动server
docker stop rmqserver01 rmqserver02
启动broker
docker stop rmqbroker01 rmqbroker02 rmqbroker03 rmqbroker04
启动rocketMq-console工具
docker start kickass_williams
访问
代码测试
package cn.itcast.rocketmq.sendmsg;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
public class SyncProducer {
public static void main(String[] args) throws Exception {
// DefaultMQProducer producer = new DefaultMQProducer("haoke");
DefaultMQProducer producer = new DefaultMQProducer("haoke");
producer.setNamesrvAddr("192.168.142.128:9876;192.168.142.128:9877");
producer.start();
String msg = "我的第一个消息";
Message message = new Message("my-test-topic", "mytag", msg.getBytes("UTF-8"));
//发送消息
SendResult sendResult = producer.send(message);
System.out.println("消息id:" + sendResult.getMsgId());
System.out.println("消息队列:" + sendResult.getMessageQueue());
System.out.println(sendResult);
producer.shutdown();
}
}
查看rockermq-console