SpringBoot整合多個(gè)Mq服務(wù)做法詳解
以rabbitmq為例
springboot項(xiàng)目想要整合rabbitmq非常簡單,只需要在maven中引入對(duì)應(yīng)的starter即可
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
然后只需要在配置文件中配置spring.rabbitmq.***即可使用。
如果我們項(xiàng)目中需要配置多個(gè)mq服務(wù)的時(shí)候,springboot便不能幫我們自動(dòng)加載了,我們需要手動(dòng)加載對(duì)應(yīng)RabbitTemplate。
具體做法如下:
1、自定義一個(gè)MqTemplate
@Data @Component public class MqTemplate { private RabbitTemplate rabbitTemplate; private String exchange; private String queue; private String routing_key; }
在這里面我們定義了RabbitTemplate、交換機(jī)、路由,隊(duì)列,如果需要其他的數(shù)據(jù),也可以往上加
2、定義一個(gè)mq配置項(xiàng)相對(duì)應(yīng)的類
@Data @Component class MqConfiguration { private String host; private Integer port; private String user; private String password; private String exchange; private String queue; private String routing_key; }
這個(gè)類的作用是將我們配置文件中的信息轉(zhuǎn)成實(shí)體類
3、將我們自定義的mq配置定義成MqTemplate類型的bean
@Configuration public class MqConfig { @Bean @ConfigurationProperties(prefix = "mq.task-update-mq") public MqConfiguration taskUpdateMqConfiguration(){ return new MqConfiguration(); } @Bean public MqTemplate taskUpdateMq(MqConfiguration taskUpdateMqConfiguration) { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setHost(taskUpdateMqConfiguration.getHost()); connectionFactory.setPort(taskUpdateMqConfiguration.getPort()); connectionFactory.setUsername(taskUpdateMqConfiguration.getUser()); connectionFactory.setPassword(taskUpdateMqConfiguration.getPassword()); connectionFactory.setVirtualHost("/"); connectionFactory.setPublisherConfirms(true); //必須要設(shè)置 RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); MqTemplate mqTemplate = new MqTemplate(); mqTemplate.setRabbitTemplate(rabbitTemplate); mqTemplate.setExchange(taskUpdateMqConfiguration.getExchange()); mqTemplate.setQueue(taskUpdateMqConfiguration.getQueue()); mqTemplate.setRouting_key(taskUpdateMqConfiguration.getRouting_key()); return mqTemplate; } }
這里我們就將該mq配置加載成一個(gè)名為taskUpdateMq的bean。當(dāng)需要添加其他的mq服務(wù)的時(shí)候,我們只需要在這個(gè)配置類里面定義bean即可
4、使用對(duì)應(yīng)的Template發(fā)送消息
首先我們把taskUpdateMq注入到業(yè)務(wù)代碼中
@Autowired MqTemplate taskUpdateMq;
然后我們定義 一個(gè)發(fā)送延遲消息的接口方法
public interface MessageService { void sendDelayMessage(MqTemplate mqTemplate, String msg, Integer delay); }
@Service public class MessageServiceImpl implements MessageService { @Override public void sendDelayMessage(MqTemplate mqTemplate, String msg, Integer delay) { mqTemplate.getRabbitTemplate().convertAndSend(mqTemplate.getExchange(), mqTemplate.getRouting_key(), msg, message -> { message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT); message.getMessageProperties().setDelay(delay); message.getMessageProperties().setContentType("application/json"); return message; }); } }
調(diào)用方法的時(shí)候?qū)qTemplate對(duì)象傳入就好了。
到此這篇關(guān)于SpringBoot整合多個(gè)Mq服務(wù)做法詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合Mq服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot接收日期字符串參數(shù)與返回日期字符串類型格式化
這篇文章主要介紹了springboot接收日期字符串參數(shù)與返回日期字符串類型格式化,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01springboot 用監(jiān)聽器統(tǒng)計(jì)在線人數(shù)案例分析
這篇文章主要介紹了springboot 用監(jiān)聽器統(tǒng)計(jì)在線人數(shù)案例分析,質(zhì)是統(tǒng)計(jì)session 的數(shù)量,思路很簡單,具體實(shí)例代碼大家參考下本文2018-02-02新手入門Jvm-- JVM對(duì)象創(chuàng)建與內(nèi)存分配機(jī)制
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的2021-06-06spring data jpa 查詢自定義字段,轉(zhuǎn)換為自定義實(shí)體方式
這篇文章主要介紹了spring data jpa 查詢自定義字段,轉(zhuǎn)換為自定義實(shí)體方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限詳解
這篇文章主要介紹了Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)權(quán)限詳解, 通過Mybatis攔截器我們可以攔截某些方法的調(diào)用,我們可以選擇在這些被攔截的方法執(zhí)行前后加上某些邏輯,需要的朋友可以參考下2023-11-11Java實(shí)現(xiàn)簡易版猜燈謎游戲的示例代碼
燈謎是中秋節(jié)傳統(tǒng)的活動(dòng)之一,而現(xiàn)代化的方式則是將其制作成一個(gè)小游戲,讓用戶在游戲的過程中猜燈謎,互動(dòng)體驗(yàn)更佳,所以本文小編就用Java制作一款猜燈謎小游戲吧2023-09-09