Maven項(xiàng)目Spring整合RocketMQ消費(fèi)者實(shí)現(xiàn)

前言

RocketMQ是阿里巴巴在2012年開(kāi)源的分布式消息中間件,目前已經(jīng)捐贈(zèng)給Apache基金會(huì),已經(jīng)于2016年11月成為 Apache 孵化項(xiàng)目,相信RocketMQ的未來(lái)會(huì)發(fā)揮著越來(lái)越大的作用,將有更多的開(kāi)發(fā)者因此受益。
本文僅對(duì)RocketMQ的簡(jiǎn)單實(shí)用做入門(mén)性介紹,不對(duì)RocketMQ的底層原理進(jìn)行深入介紹,后續(xù)文章將對(duì)RocketMQ的原理做詳細(xì)介紹。

1、RocketMQ的Maven依賴,pom.xml中引入jar包:

<!-- RocketMQ --> 
<dependency>
    <groupId>com.alibaba.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>3.5.8</version>
</dependency>
<dependency>
   <groupId>com.alibaba.rocketmq</groupId>
   <artifactId>rocketmq-all</artifactId>
   <version>3.5.8</version>
   <type>pom</type>
  </dependency>

2、Spring bean 配置單例

<!-- 監(jiān)聽(tīng)實(shí)現(xiàn) -->
<bean id="rocketMqListener" class="com.rocketMq.service.impl.RocketMqListenerImpl"></bean>
<!-- 監(jiān)聽(tīng)配置 -->
<bean id="consumer" class="com.rocketMq.utils.Consumer" init-method="init">
    <property name="consumerGroup" value="PushConsumer"/>
    <property name="namesrvAddr" value="192.168.0.1:19876"/>
    <property name="topic" value="node_topic"/>
    <property name="subExpression" value="slu"/>
    <property name="rocketMqListener" ref="rocketMqListener"/>
</bean>  

3、Java源碼

1)、RocketMqListener.java

package com.rocketMq.dao;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import com.alibaba.rocketmq.common.message.MessageExt;
 /**
* 消費(fèi)者監(jiān)聽(tīng)接口,業(yè)務(wù)需要實(shí)現(xiàn)此接口并配置到Consumer中
* Created by 麥克勞林
*/
public interface RocketMqListener {
boolean RocketMqMessage(MessageExt ext,ConsumeConcurrentlyContext Context);
}

2)、

package com.rocketMq.dao;
import java.util.List;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import com.alibaba.rocketmq.common.message.MessageExt;
/**
 * 監(jiān)聽(tīng)wrapper,用于處理共通業(yè)務(wù),并轉(zhuǎn)發(fā)消息到業(yè)務(wù)監(jiān)聽(tīng)中。
 * Created by 麥克勞林
 */
public class RocketMqWrapper implements MessageListenerConcurrently{
private RocketMqListener rocketMqListener;
public RocketMqListener getRocketMqMessageListener() {
    return rocketMqListener;
}
public void setRocketMqListener(RocketMqListener rocketMqListener) {
    this.rocketMqListener = rocketMqListener;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messagesList,ConsumeConcurrentlyContext consumeConcurrentlyContext) {  
        if(ext.getTags().equals("RFID")){
            if(rocketMqListener.RFIDMessage(ext, consumeConcurrentlyContext)){
                 return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            } else{
                return ConsumeConcurrentlyStatus.RECONSUME_LATER;
            }   
    }
}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 嗯……走哪條路回去??? 遠(yuǎn)的那條吧。
    祈江閱讀 184評(píng)論 0 0
  • 旅途是美麗的,是因?yàn)槁猛颈旧硎敲利惖?。不要在意是否迷路,也不需?zhí)念何為終點(diǎn)--因?yàn)槊總€(gè)人的終點(diǎn)都是一樣的。當(dāng)生命離...
    KYLOS閱讀 213評(píng)論 0 1
  • 語(yǔ)言擁有鼓舞人心的力量,就算是含混不清、故弄玄虛、看似深刻但毫無(wú)意義的語(yǔ)言也能。 就比如說(shuō) “整體使無(wú)盡現(xiàn)象靜默”...
    夢(mèng)碎紅樓閱讀 581評(píng)論 1 1
  • 中文名:阿里媽媽 外文名:Alimama 廣告形式:包括時(shí)長(zhǎng)計(jì)費(fèi)、推介廣告等 目 標(biāo):讓天下沒(méi)有難做的營(yíng)銷(xiāo) 創(chuàng)始...
    燕姐姐的小島閱讀 2,314評(píng)論 1 1

友情鏈接更多精彩內(nèi)容