欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合多個Mq服務(wù)做法詳解

 更新時間:2023年02月14日 15:25:44   作者:chenxianchong  
SpringBoot整合rabbitmq很容易,但是整合的目的是為了使用,那要使用rabbitmq就要對其有一定的了解,不然容易整成一團漿糊。因為說到底,SpringBoot只是在封裝rabbitmq的API,讓其更容易使用而已,廢話不多說,讓我們一起整它

以rabbitmq為例

springboot項目想要整合rabbitmq非常簡單,只需要在maven中引入對應(yīng)的starter即可

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

然后只需要在配置文件中配置spring.rabbitmq.***即可使用。

如果我們項目中需要配置多個mq服務(wù)的時候,springboot便不能幫我們自動加載了,我們需要手動加載對應(yīng)RabbitTemplate。

具體做法如下:

1、自定義一個MqTemplate

@Data
@Component
public class MqTemplate {
    private RabbitTemplate rabbitTemplate;
    private String exchange;
    private String queue;
    private String routing_key;
}

在這里面我們定義了RabbitTemplate、交換機、路由,隊列,如果需要其他的數(shù)據(jù),也可以往上加

2、定義一個mq配置項相對應(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;
}

這個類的作用是將我們配置文件中的信息轉(zhuǎn)成實體類

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配置加載成一個名為taskUpdateMq的bean。當需要添加其他的mq服務(wù)的時候,我們只需要在這個配置類里面定義bean即可

4、使用對應(yīng)的Template發(fā)送消息

首先我們把taskUpdateMq注入到業(yè)務(wù)代碼中

@Autowired
MqTemplate taskUpdateMq;

然后我們定義 一個發(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)用方法的時候?qū)qTemplate對象傳入就好了。

到此這篇關(guān)于SpringBoot整合多個Mq服務(wù)做法詳解的文章就介紹到這了,更多相關(guān)SpringBoot整合Mq服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論