SpringBoot整合RocketMQ

目录

引入依赖

 ​配置文件

使用RocketMQTemplate发送消息

使用@RocketMQMessageListener消费消息

@ExtRocketMQTemplateConfiguration()

事务消息


引入依赖


        
            org.apache.rocketmq
            rocketmq-spring-boot-starter
            2.2.2
            
                
                    org.apache.rocketmq
                    rocketmq-client
                
            
        
        
            org.apache.rocketmq
            rocketmq-client
            4.9.5
        
        
            org.springframework.boot
            spring-boot-starter-web
            2.5.9
        
        
            org.springframework.boot
            spring-boot-starter-test
            2.5.9
        
        
            junit
            junit
            4.13.2
            test
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
        
            io.springfox
            springfox-swagger2
            2.9.2
        
    

 ​配置文件

rocketmq.name-server=127.0.0.1:9876
#指定生产者组
rocketmq.producer.group=springBootGroup

#如果这里不配topic,就需要在消费者的注解中配。
#rocketmq.consumer.topic=
rocketmq.consumer.group=testGroup
server.port=9000

使用RocketMQTemplate发送消息

@Component
public class SpringProducer {

    @Resource
    private RocketMQTemplate rocketMQTemplate;

    public void sendMessage(String topic,String msg){
        this.rocketMQTemplate.convertAndSend(topic,msg);
    }
}

使用@RocketMQMessageListener消费消息

@Component
@RocketMQMessageListener(consumerGroup = "MyConsumerGroup", topic = "TestTopic",consumeMode= ConsumeMode.CONCURRENTLY,messageModel= MessageModel.BROADCASTING)
public class SpringConsumer implements RocketMQListener {
    @Override
    public void onMessage(String message) {
        System.out.println("Received message : "+ message);
    }
}

@ExtRocketMQTemplateConfiguration()

       一个RocketMQTemplate实例只能包含一个生产者,也就只能往一个Topic下发送消息。如果需要往另外一个Topic下发送消息,就需要通过@ExtRocketMQTemplateConfiguration()注解另外声明一个子类实例。

@ExtRocketMQTemplateConfiguration()
//@ExtRocketMQConsumerConfiguration(topic="test_consumer_group")
public class ExtRocketMQTemplate extends RocketMQTemplate {
}

使用时通过注入ExtRocketMQTemplate使用即可。


事务消息

         对于事务消息机制,最关键的事务监听器需要通过@RocketMQTransactionListener注解注入到Spring容器当中。在这个注解当中可以通过rocketMQTemplateBeanName属性,指向具体的RocketMQTemplate子类。


//@RocketMQTransactionListener(rocketMQTemplateBeanName = "ExtRocketMQTemplate")
@RocketMQTransactionListener()
public class MyTransactionImpl implements RocketMQLocalTransactionListener {

    @Override
    public RocketMQLocalTransactionState executeLocalTransaction(Message msg, Object arg) {

    }

    @Override
    public RocketMQLocalTransactionState checkLocalTransaction(Message msg) {

    }
}

你可能感兴趣的:(分布式中间件,spring,boot,java-rocketmq,rocketmq,服务器,java)