demo系列-消息队列-RocketMQ

demo系列-消息队列-RocketMQ

1. Windows安装部署

前提
  1. JAVA_HOME路径不要空格
  2. broker启动指定本地IP
1.1 下载

https://rocketmq.apache.org/dowloading/releases/

https://mirror-hk.koddos.net/apache/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip

1.2 配置环境变量

ROCKETMQ_HOME

1.3 启动
1.3.1 启动name-server

start mqnamesrv.cmd

1.3.2 启动broker

start mqbroker -n 127.0.0.1:9876 -c broker.conf

broker.conf来自…/conf/broker.conf

并指定了brokerIP1=127.0.0.1

作用:https://blog.csdn.net/jiajiren11/article/details/80528406

1.3.3 下载|编译|启动rocketmq-console

git clone https://github.com/apache/rocketmq-externals.git

配置:rocket-console的server.port以及指定namesrv地址端口

--
server.port9999(随意)
rocketmq.config.namesrvAddr127.0.0.1:9876
rocketmq.config.dataPath(随意)

编译: mvn clean package [--settings "maven/settings.xml"] -Dmaven.test.skip=true

启动: java -jar rocketmq-console-ng-2.0.0.jar

1.4 访问127.0.0.1:9999

2. Spring Boot集成RocketMQ

2.1 依赖
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
2.2 配置
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=test-group
2.3 生产者
@Service
public class ProducerService {
    @Autowired
    RocketMQTemplate rocketMQTemplate;

    public void send(String topic, String message) {
        String producerGroup = rocketMQTemplate.getProducer().getProducerGroup();
        System.out.println("生产者组 = " + producerGroup);

        rocketMQTemplate.syncSendOrderly(topic, MessageBuilder.withPayload(message + " sync send order with hashKey=sync-hash-key").build(), "sync-hash-key");
        rocketMQTemplate.send(topic, MessageBuilder.withPayload(message).build());
        rocketMQTemplate.asyncSendOrderly(topic, MessageBuilder.withPayload(message + " async send order with hashKey=async-hash-key").build(), "async-hash-key", new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("发送成功,结果:" + JSON.toJSONString(sendResult));
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("发送失败,结果:" + throwable.getMessage());
            }
        });
    }
}
2.4 定时任务:定时发送生产者

@EnableScheduling

@Component
public class ScheduledProducer {
    @Autowired
    ProducerService producerService;

    @Scheduled(fixedRate = 3000)
    public void fixedRateSend() {
        System.out.println("定时任务——发送消息——时间:" + LocalDateTime.now());
        producerService.send("test", "消息,时间=" + LocalDateTime.now().toString());
    }
}
2.5 消费者
@Service
@RocketMQMessageListener(topic = "test", consumerGroup = "consumer-group-1")
public class ConsumerService implements RocketMQListener<String> {
    @Override
    public void onMessage(String s) {
        System.out.println("接受消息=" + s);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值