RocketMQ部署在阿里云ECS

在Linux上安装RocketMQ...由于这次我装好了,下次重新装的时候再上图

基本上参考官方文档,复制粘贴指令即可完成

一、在阿里云ECS服务器上部署RocketMQ

1.从官网上下载最新的RocketMQ:http://rocketmq.apache.org/docs/quick-start/

RocketMQ部署在阿里云ECS_第1张图片

写这篇文章时我下载的是4.4.0

  > unzip rocketmq-all-4.4.0-source-release.zip
  > cd rocketmq-all-4.4.0/
  > mvn -Prelease-all -DskipTests clean install -U
  > cd distribution/target/apache-rocketmq

安装完后要在 apache-rocketmq/bin文件夹中修改runborker.sh和runserver.sh的配置,把分配的内存改小一点

参考下图修改runborker.sh

RocketMQ部署在阿里云ECS_第2张图片

参考下图修改runserver.sh

 RocketMQ部署在阿里云ECS_第3张图片

修改broker.conf ,在最后添加:brokerIP1=你的ECS服务器的公网ip

启动broker指令:

nohup sh  bin/mqbroker -n localhost:9876 -c ./conf/broker.conf

x、添加依赖


    org.apache.rocketmq
    rocketmq-client
    4.4.0

注意:依赖中的版本号要和当前使用的RocketMQ服务版本要一致,否则无法自动创建topic

x、项目结构

RocketMQ部署在阿里云ECS_第4张图片

x、代码

1. JmsConfig.class:手动抽取的一个配置类

public class JmsConfig {
    public static final String producerGroup = "ppapgro11u1p";
    public static final String nameServerAddr = "120.78.152.168:9876";
    public static final String topic = "aiden_topic";
}

2. PayProducer.class:生产者类,消息的生产者,用来发送消息

@Component
public class PayProducer {
    private DefaultMQProducer producer;

    public PayProducer() {
        producer = new DefaultMQProducer(JmsConfig.producerGroup);
        //this.nameServerAddr = nameServerAddr;
        producer.setNamesrvAddr(JmsConfig.nameServerAddr);
        start();
    }

    /**
     * 对象在使用之前必须调用一次,只  能初始化一次
     */
    public void start() {
        try {
            this.producer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }
    }

    /**
     * 一般在应用上下文,使用上下文监听器,进行关闭
     */
    public void shutdown() {
        this.producer.shutdown();
    }

    public DefaultMQProducer getProducer() {
        return producer;
    }

    public void setProducer(DefaultMQProducer producer) {
        this.producer = producer;
    }
}

3. 消费者类,消息的消费者,用于接收、处理消息

@Component
public class PayConsumer {
    private DefaultMQPushConsumer consumer;
    private String consumerGroup = "cg";

    public PayConsumer() throws MQClientException {
        consumer = new DefaultMQPushConsumer(consumerGroup);
        consumer.setNamesrvAddr(JmsConfig.nameServerAddr);
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
        consumer.subscribe(JmsConfig.topic, "*");
        /*consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
            try {
                Message msg = msgs.get(0);
                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), new String(msgs.get(0).getBody()));
                String topic = msg.getTopic();
                String body = new String(msg.getBody(), StandardCharsets.UTF_8);
                String tags = msg.getTags();
                String keys = msg.getKeys();
                System.out.println("topic=" + topic + ",tags=" + tags + ",keys=" + keys + ",msg=" + body);
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            } catch (Exception e) {
                e.printStackTrace();
                return ConsumeConcurrentlyStatus.RECONSUME_LATER;
            }
        });*/
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                try {
                    Message msg = msgs.get(0);
                    System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), new String(msgs.get(0).getBody()));
                    String topic = msg.getTopic();
                    String body = new String(msg.getBody(), StandardCharsets.UTF_8);
                    String tags = msg.getTags();
                    String keys = msg.getKeys();
                    System.out.println("topic=" + topic + ",tags=" + tags + ",keys=" + keys + ",msg=" + body);
                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                } catch (Exception e) {
                    e.printStackTrace();
                    return ConsumeConcurrentlyStatus.RECONSUME_LATER;
                }
            }
        });
        consumer.start();
        System.out.println("consumer start");
    }
}

 

你可能感兴趣的:(学习记录)