GithubHelp home page GithubHelp logo

common-rocketmq's Introduction

common-rocketmq介绍

该项目对rocketmq在实际项目开发中做了简单的封装,使用简单,common-rocketmq是基于JDK8的,下面是common-rocketmq结构:

包含5个类和一个XML配置文件

rocketmq---------common-------MessageData(消息传输DTO)
			|
			|---producer----------RocketMQProducer(生产者接口)
			| 				|
			| 				|---RocketMQProducerImpl(生产者接口实现)
			|---consumer------RocketMQConsumer(消费者)
							|
							|---ConsumerService(消费者业务逻辑需要实现的接口)
common-rocketmq.xml

使用举例

demo的github地址:https://github.com/xinyi-lt/common-rocketmq-demo

1.maven依赖

<dependency>
	<groupId>com.sxzq.lt</groupId>
	<artifactId>common-rocketmq</artifactId>
	<version>1.0-SNAPSHOT</version>
</dependency>

2.producer生产者

  • 配置文件引入
    <import resource="classpath*:conf/common-rocketmq.xml"/>
  • 代码中注入producer
        RocketMQProducer producer = applicationContext.getBean(RocketMQProducer.class);
  • 发送消息
        //消息传输DTO
        MessageData<UserInfo> messageData = new MessageData<>();

        //时间戳
        messageData.setTimestamp(System.currentTimeMillis());
        //幂等控制根据UUID来控制
        messageData.setUuid(UUID.randomUUID().toString());

        UserInfo userInfo = new UserInfo();
        //useinfo数据

        messageData.setData(userInfo);

        logger.info("start to send message data:{}", JSON.toJSONString(messageData));

        //发送消息
        SendResult result = producer.sendMessage(
                new Message(MQConstant.MQ_TOPIC_PRODUCER_DEMO,
                MQConstant.MQ_TAG_PRODUCER_DEMO_FIRST,
                UUID.randomUUID().toString(),
                JSON.toJSONString(messageData).getBytes(Charset.forName("utf-8"))));

        logger.info("send message complete result:{} ", result);

3.consumer消费者

  • 配置文件引入

     <import resource="classpath*:conf/common-rocketmq.xml"/>
  • 实现common-rocketmq中的ConsumerService的接口

        public class DemoConsumerService implements ConsumerService {
           @Override
            public boolean consume(Message message) {
   
                  //消费者业务逻辑
                  return consumeResult;
            }
        }
  • DemoConsumerService添加到spring容器进行管理
       <bean id="demoConsumerService" class="com.sxzq.lt.demo.consumer.DemoConsumerService"/>
  • 创建该业务实例的消费者
         <bean id="demoConsumer" class="com.sxzq.lt.rocketmq.consumer.RocketMQConsumer"
              init-method="start" destroy-method="shutdown">  
                 <!--consumerGroup -->
                 <constructor-arg value="MQ_CONSUMER_GROUP_DEMO_1" index="0"></constructor-arg>
                 <!-- topic -->
                 <constructor-arg value="MQ_TOPIC_PRODUCER_DEMO" index="1"></constructor-arg>
                 <!-- topic's subExpression -->
                 <constructor-arg value="MQ_TAG_PRODUCER_DEMO_1" index="2"></constructor-arg>
                 <property name="namesrvAddr" value="127.0.0.1:9876"></property>
                 <property name="consumeFromWhere" ref="CONSUME_FROM_FIRST_OFFSET"/>
                 <!--消费者业务逻辑实现-->
                 <property name="consumerHandler" ref="demoConsumerService"/>
                 <!--集群模式,默认为集群消费,不需要配置-->
                 <property name="messageModel" ref="CLUSTERING"/>
        </bean>

common-rocketmq's People

Contributors

xinyi-lt avatar

Stargazers

Roman avatar

Watchers

James Cloos avatar feizi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.