RabbitMQ筆記二十五:springboot整合rabbitmq

springboot整合rabbitmq

加入依賴:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.6.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
    </dependencies>

配置文件配置院溺,查看org.springframework.boot.autoconfigure.amqp.RabbitProperties這個類识樱,

具體的配置如下,在application.properties中定義如下

 spring.rabbitmq.addresses=amqp://zhihao.miao:123456@192.168.1.131:5672

當(dāng)然下面的方式也可以

spring.rabbitmq.host=192.168.1.131
spring.rabbitmq.port=5672
spring.rabbitmq.username=zhihao.miao
spring.rabbitmq.password=123456

還有一些其他的配置,具體的情況可以去設(shè)置,比如:

requestedHeartbeat
publisherConfirms
publisherReturns
connectionTimeout
.....

自動聲明

配置類,

@Configuration
public class MQCOnfiguration {

    @Bean
    public Queue pay(){
        return new Queue("pay",true);
    }

    @Bean
    public Queue order(){
        return new Queue("order",true);
    }

 }

應(yīng)用啟動類,

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

啟動應(yīng)用啟動類,發(fā)現(xiàn)隊列沒有自動聲明周霉,原因是自動聲明必須要和rabbitmq服務(wù)進(jìn)行連接。

改造成下面的:

 @Configuration
public class MQCOnfiguration {

    @Bean
    public Queue pay(){
        return new Queue("pay",true);
    }

    @Bean
    public Queue order(){
        return new Queue("order",true);
    }

    @Bean
    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory){
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames("zhihao.miao.order");
        container.setAcknowledgeMode(AcknowledgeMode.AUTO);
        container.setMessageListener((MessageListener) message -> {
            System.out.println("====接收到消息=====");
            System.out.println(new String(message.getBody()));
        });
        return container;
    }
}

啟動啟動類Application類亚皂,發(fā)現(xiàn)二個隊列自動聲明了俱箱。

總結(jié)
自動聲明的一些條件:
1.不需要在容器中去聲明ConnectionFactory,RabbitAdmin灭必,RabbitTemplate了狞谱,sprngboot自動幫我們管理了。

發(fā)送消息

@RestController
public class SendController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("/send/pay")
    public String send(){
        MessageProperties messageProperties = new MessageProperties();
        messageProperties.setContentType("text");
        rabbitTemplate.send("","pay", MessageBuilder.withBody("支付了1023.00".getBytes()).
                andProperties(messageProperties).build());
        return "Success";
    }
}

應(yīng)用啟動類

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

發(fā)送消息:http://localhost:8080/send/pay

從控制臺上發(fā)現(xiàn)消息已經(jīng)發(fā)送成功

從發(fā)送消息的列子我們知道spring已經(jīng)托管了RabbitmqTemplate這個對象

消費消息厂财,使用注解的方式監(jiān)聽隊列

@Component
public class MessageHandle {

    @RabbitListener(queues = "pay")
    public void handle(String body){
        System.out.println("=====handle==========");
        System.out.println(body);
    }
}

應(yīng)用啟動類

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

我們之前學(xué)習(xí)的時候芋簿,使用spring-amqp發(fā)現(xiàn)使用@RabbitListener注解的時候,必須聲明org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory對象璃饱,而如果使用springboot的方式則不需要自己在容器中聲明org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory与斤。

總結(jié)
使用springboot之后,很多前置的Bean都已經(jīng)被裝配好了荚恶,我們直接使用就行了撩穿,之前在spring-amqp中怎么使用的,現(xiàn)在還是怎么用谒撼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末食寡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子廓潜,更是在濱河造成了極大的恐慌抵皱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辩蛋,死亡現(xiàn)場離奇詭異呻畸,居然都是意外死亡,警方通過查閱死者的電腦和手機悼院,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門伤为,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人据途,你說我怎么就攤上這事绞愚⌒鸬椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵位衩,是天一觀的道長裆蒸。 經(jīng)常有香客問我,道長蚂四,這世上最難降的妖魔是什么光戈? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮遂赠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晌杰。我一直安慰自己跷睦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布肋演。 她就那樣靜靜地躺著抑诸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爹殊。 梳的紋絲不亂的頭發(fā)上蜕乡,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音梗夸,去河邊找鬼层玲。 笑死,一個胖子當(dāng)著我的面吹牛反症,可吹牛的內(nèi)容都是我干的辛块。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼铅碍,長吁一口氣:“原來是場噩夢啊……” “哼润绵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胞谈,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤尘盼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烦绳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卿捎,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年爵嗅,在試婚紗的時候發(fā)現(xiàn)自己被綠了娇澎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡睹晒,死狀恐怖趟庄,靈堂內(nèi)的尸體忽然破棺而出括细,到底是詐尸還是另有隱情,我是刑警寧澤戚啥,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布奋单,位于F島的核電站,受9級特大地震影響猫十,放射性物質(zhì)發(fā)生泄漏览濒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一拖云、第九天 我趴在偏房一處隱蔽的房頂上張望贷笛。 院中可真熱鬧,春花似錦宙项、人聲如沸乏苦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汇荐。三九已至,卻和暖如春盆繁,著一層夾襖步出監(jiān)牢的瞬間掀淘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工油昂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留革娄,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓秕狰,卻偏偏與公主長得像稠腊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸣哀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容