linux下安装rocketmq
windows上安装了rocketmq,但是用java怎么都发不出消息,好吧,放弃了windows平台…
下载
下载并解压:
wget http://mirror.bit.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip
设置环境
vi /etc/profile
export ROCKETMQ_HOME=/opt/softinstall/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
# 生效
source /etc/profile
# 关闭防火墙
sudo systemctl stop firewalld
修改broker.conf配置文件
增加两行:
namesrvAddr=192.168.100.1xx:9876
brokerIP1=192.168.100.1xx
启动namesrv
nohup sh bin/mqnamesrv >> namesrv.log &
tail -f ~/logs/rocketmqlogs/namesrv.log
# namesrv.log 下面表示成功
The Name Server boot success. serializeType=JSON
启动broker
nohup sh bin/mqbroker -c conf/broker.conf >> borker.log &
tail -f ~/logs/rocketmqlogs/broker.log
# broker.log 下面就成功了
The broker[broker-a, 192.168.100.1xx:10911] boot success.
serializeType=JSON and name server is 192.168.100.1xx:9876
举个例子
依赖
// client版本要和rocketmq版本一致
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.6.0</version>
</dependency>
producer:
public class Producer {
private static void main(String[] args) throws Exception {
// my-group不存在,就需要创建
DefaultMQProducer producer = new DefaultMQProducer("my-group");
producer.setNamesrvAddr("192.168.100.1xx:9876");
producer.setVipChannelEnabled(false);
producer.setCreateTopicKey("AUTO_CREATE_TOPIC_KEY");
producer.start();
for (int i = 0; i < 128; i++) {
String msg = "Message: hello rocket_" + i;
Message message = new Message("my-topic", "my-tag", msg.getBytes());
producer.send(message);
}
System.out.println("message send...");
producer.shutdown();
}
}
consumer:
public class Consumer {
public static void main(String[] args) throws MQClientException {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("my-group");
consumer.setNamesrvAddr("192.168.100.1xx:9876");
consumer.subscribe("my-topic","my-tag");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list,
ConsumeConcurrentlyContext consumeConcurrentlyContext) {
for (MessageExt messageExt : list) {
System.out.println(new String(messageExt.getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
}
}