目錄結(jié)構(gòu)
引入 maven依賴(lài)
?<parent> ????<groupid>org.springframework.boot</groupid> ????<artifactid>spring-boot-starter-parent</artifactid> ????<version>1.5.4.RELEASE</version> ????<relativepath></relativepath>? ??</parent> ??<properties> ????<project.build.sourceencoding>UTF-8</project.build.sourceencoding> ????<project.reporting.outputencoding>UTF-8</project.reporting.outputencoding> ????<java.version>1.8</java.version> ??</properties> ??<dependencies> ????<dependency> ??????<groupid>org.springframework.boot</groupid> ??????<artifactid>spring-boot-starter</artifactid> ????</dependency> ????<dependency> ??????<groupid>org.springframework.boot</groupid> ??????<artifactid>spring-boot-starter-web</artifactid> ????</dependency> ????<dependency> ??????<groupid>org.springframework.boot</groupid> ??????<artifactid>spring-boot-starter-test</artifactid> ??????<scope>test</scope> ????</dependency> ????<dependency> ??????<groupid>org.springframework.boot</groupid> ??????<artifactid>spring-boot-starter-activemq</artifactid> ????</dependency> ??</dependencies> ??<build> ????<plugins> ??????<plugin> ????????<groupid>org.springframework.boot</groupid> ????????<artifactid>spring-boot-maven-plugin</artifactid> ??????</plugin> ????</plugins> ??</build>
引入 application.yml配置
spring: ?activemq: ??broker-url:?tcp://127.0.0.1:61616 ??user:?admin ??password:?admin queue:?springboot-queue server: ?port:?8080
創(chuàng)建QueueConfig
@Configuration public?class?QueueConfig?{ ??@Value("${queue}") ??private?String?queue; ??@Bean ??public?Queue?logQueue()?{ ????return?new?ActiveMQQueue(queue); ??} ??@Bean ??public?JmsTemplate?jmsTemplate(ActiveMQConnectionFactory?activeMQConnectionFactory,?Queue?queue)?{ ????JmsTemplate?jmsTemplate?=?new?JmsTemplate(); ????jmsTemplate.setDeliveryMode(2);//?進(jìn)行持久化配置?1表示非持久化,2表示持久化 ????jmsTemplate.setConnectionFactory(activeMQConnectionFactory); ????jmsTemplate.setDefaultDestination(queue);?//?此處可不設(shè)置默認(rèn),在發(fā)送消息時(shí)也可設(shè)置隊(duì)列 ????jmsTemplate.setSessionAcknowledgeMode(4);//?客戶(hù)端簽收模式 ????return?jmsTemplate; ??} ??//?定義一個(gè)消息監(jiān)聽(tīng)器連接工廠(chǎng),這里定義的是點(diǎn)對(duì)點(diǎn)模式的監(jiān)聽(tīng)器連接工廠(chǎng) ??@Bean(name?=?"jmsQueueListener") ??public?DefaultJmsListenerContainerFactory?jmsQueueListenerContainerFactory( ??????ActiveMQConnectionFactory?activeMQConnectionFactory)?{ ????DefaultJmsListenerContainerFactory?factory?=?new?DefaultJmsListenerContainerFactory(); ????factory.setConnectionFactory(activeMQConnectionFactory); ????//?設(shè)置連接數(shù) ????factory.setConcurrency("1-10"); ????//?重連間隔時(shí)間 ????factory.setRecoveryInterval(1000L); ????factory.setSessionAcknowledgeMode(4); ????return?factory; ??} }
創(chuàng)建生產(chǎn)者:
@SpringBootApplication @Component @EnableScheduling public?class?Producer?{ ?? ??@Autowired ??private?JmsMessagingTemplate?jmsMessagingTemplate; ?? ??@Autowired ??private?Queue?queue; ?? ??@Scheduled(fixedDelay=3000) ??public?void?send()?{ ????String?result?=?System.currentTimeMillis()+"---測(cè)試"; ????System.out.println("result"+result); ????jmsMessagingTemplate.convertAndSend(queue,result); ??} ??public?static?void?main(String[]?args)?{ ????SpringApplication.run(Producer.class,?args); ??} }
創(chuàng)建消費(fèi)者的application.yml
spring: ?activemq: ??broker-url:?tcp://127.0.0.1:61616 ??user:?admin ??password:?admin queue:?springboot-queue server: ?port:?8081
創(chuàng)建消費(fèi)者:
@Component @SpringBootApplication public?class?consumer?{ ??private?int?count?=0; ?? ??@JmsListener(destination?=?"${queue}") ??public?void?receive(TextMessage?textMessage,Session?session)?throws?JMSException?{ ????String?text?=?textMessage.getText(); ???? ????System.out.println("消費(fèi):"+text+"第幾次獲取消息count:"+(++count)); ???? ????System.out.println(); ????String?jmsMessageID?=?textMessage.getJMSMessageID(); ??} ? ??public?static?void?main(String[]?args)?{ ????SpringApplication.run(consumer.class,args); ??} }
結(jié)果顯示:
以上是怎么在SpringBoot中整合ActiveMQ的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Jasypt介紹Jasypt是一個(gè)java庫(kù),它允許開(kāi)發(fā)員以最少的努力為他/她的項(xiàng)目添加基本的加密功能,并且不需要對(duì)加密工作原理有深入的了解用于單向和雙向加密的高安全性、基于標(biāo)準(zhǔn)的加密技術(shù)。加密密碼,文本,數(shù)字,二進(jìn)制文件...適合集成到基于Spring的應(yīng)用程序中,開(kāi)放API,用于任何JCE提供程序...添加如下依賴(lài):com.github.ulisesbocchiojasypt-spring-boot-starter2.1.1Jasypt好處保護(hù)我們的系統(tǒng)安全,即使代碼泄露,也可以保證數(shù)據(jù)源的

一、Redis實(shí)現(xiàn)分布式鎖原理為什么需要分布式鎖在聊分布式鎖之前,有必要先解釋一下,為什么需要分布式鎖。與分布式鎖相對(duì)就的是單機(jī)鎖,我們?cè)趯?xiě)多線(xiàn)程程序時(shí),避免同時(shí)操作一個(gè)共享變量產(chǎn)生數(shù)據(jù)問(wèn)題,通常會(huì)使用一把鎖來(lái)互斥以保證共享變量的正確性,其使用范圍是在同一個(gè)進(jìn)程中。如果換做是多個(gè)進(jìn)程,需要同時(shí)操作一個(gè)共享資源,如何互斥呢?現(xiàn)在的業(yè)務(wù)應(yīng)用通常是微服務(wù)架構(gòu),這也意味著一個(gè)應(yīng)用會(huì)部署多個(gè)進(jìn)程,多個(gè)進(jìn)程如果需要修改MySQL中的同一行記錄,為了避免操作亂序?qū)е屡K數(shù)據(jù),此時(shí)就需要引入分布式鎖了。想要實(shí)現(xiàn)分

1、自定義RedisTemplate1.1、RedisAPI默認(rèn)序列化機(jī)制基于A(yíng)PI的Redis緩存實(shí)現(xiàn)是使用RedisTemplate模板進(jìn)行數(shù)據(jù)緩存操作的,這里打開(kāi)RedisTemplate類(lèi),查看該類(lèi)的源碼信息publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations,BeanClassLoaderAware{//聲明了key、value的各種序列化方式,初始值為空@NullableprivateRedisSe

springboot讀取文件,打成jar包后訪(fǎng)問(wèn)不到最新開(kāi)發(fā)出現(xiàn)一種情況,springboot打成jar包后讀取不到文件,原因是打包之后,文件的虛擬路徑是無(wú)效的,只能通過(guò)流去讀取。文件在resources下publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

使用場(chǎng)景1、下單成功,30分鐘未支付。支付超時(shí),自動(dòng)取消訂單2、訂單簽收,簽收后7天未進(jìn)行評(píng)價(jià)。訂單超時(shí)未評(píng)價(jià),系統(tǒng)默認(rèn)好評(píng)3、下單成功,商家5分鐘未接單,訂單取消4、配送超時(shí),推送短信提醒……對(duì)于延時(shí)比較長(zhǎng)的場(chǎng)景、實(shí)時(shí)性不高的場(chǎng)景,我們可以采用任務(wù)調(diào)度的方式定時(shí)輪詢(xún)處理。如:xxl-job今天我們采

在Springboot+Mybatis-plus不使用SQL語(yǔ)句進(jìn)行多表添加操作我所遇到的問(wèn)題準(zhǔn)備工作在測(cè)試環(huán)境下模擬思維分解一下:創(chuàng)建出一個(gè)帶有參數(shù)的BrandDTO對(duì)象模擬對(duì)后臺(tái)傳遞參數(shù)我所遇到的問(wèn)題我們都知道,在我們使用Mybatis-plus中進(jìn)行多表操作是極其困難的,如果你不使用Mybatis-plus-join這一類(lèi)的工具,你只能去配置對(duì)應(yīng)的Mapper.xml文件,配置又臭又長(zhǎng)的ResultMap,然后再去寫(xiě)對(duì)應(yīng)的sql語(yǔ)句,這種方法雖然看上去很麻煩,但具有很高的靈活性,可以讓我們

SpringBoot和SpringMVC都是Java開(kāi)發(fā)中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個(gè)框架的特點(diǎn)和用途,并對(duì)它們的差異進(jìn)行比較。首先,我們來(lái)了解一下SpringBoot。SpringBoot是由Pivotal團(tuán)隊(duì)開(kāi)發(fā)的,它旨在簡(jiǎn)化基于Spring框架的應(yīng)用程序的創(chuàng)建和部署。它提供了一種快速、輕量級(jí)的方式來(lái)構(gòu)建獨(dú)立的、可執(zhí)行

1.選擇合適的客戶(hù)端傳輸協(xié)議ActiveMQ支持多種客戶(hù)端傳輸協(xié)議,包括STOMP、AMQP和OpenWire。根據(jù)您的應(yīng)用程序需求選擇合適的協(xié)議,以?xún)?yōu)化性能和可靠性。2.配置消息持久性持久性消息即使在服務(wù)器重新啟動(dòng)后也能持久化,而非持久性消息則不會(huì)。對(duì)于關(guān)鍵消息,選擇持久性以確??煽總鬟f。演示代碼://設(shè)置消息持久性MessageProducerproducer=session.createProducer(destination);producer.setDeliveryMode(Deliv
