SpringMvc项目配置RabbitMq

前言:只有消费者部分,没有记录生产者部分

结构图

配置类

可以xml配置,也可以配置类,二者可以相互转化。两种bean注入的方式。

java 复制代码
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DbDataQueueConsumeConfig {

    @Value("${rabbitmq.host}")
    private String host;

    @Value("${rabbitmq.port:5672}")
//    @Value("#{new Integer('${rabbitmq.port}')}")
    private Integer port;

    @Value("${rabbitmq.username}")
    private String username;

    @Value("${rabbitmq.password}")
    private String password;

    @Value("${rabbitmq.virtual-host}")
    private String virtualHost;

    @Value("${rabbitmq.queue}")
    private String queueName;

    /**
     * 配置连接工厂
     */
    @Bean(name = "rabbitConnectionFactory")
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(host);
        connectionFactory.setPort(port);
        connectionFactory.setUsername(username);
        connectionFactory.setPassword(password);
        connectionFactory.setVirtualHost(virtualHost);
        return connectionFactory;
    }

    /**
     * 配置 RabbitTemplate,用于发送消息
     */
    @Bean
    public RabbitTemplate rabbitTemplate(@Qualifier("rabbitConnectionFactory") ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        rabbitTemplate.setMessageConverter(jsonMessageConverter());
        return rabbitTemplate;
    }


    @Bean
    public Jackson2JsonMessageConverter jsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }

    /**
     * 配置消息监听容器
     */
    @Bean
    public MessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory, BdDataQueueListener bdDataQueueListener) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames(queueName);
        container.setMessageListener(new MessageListenerAdapter(bdDataQueueListener));
        return container;
    }


}

配置文件中配置好rabbitmq服务的地址

properties 复制代码
rabbitmq.host=xxx.xxx.xxx.xxx
rabbitmq.port=3011
rabbitmq.username=username
rabbitmq.password=password
rabbitmq.virtual-host=/xxx
rabbitmq.queue=queuename

消费者

java 复制代码
@Component
public class BdDataQueueListener implements MessageListener {


    @Override
    public void onMessage(Message message) {

        try {
           // 这里写业务逻辑
        } catch (Exception e) {

        }
    }

}

重要部分都在上面。其余的不在放出来。

参考文章

文章1

文章2

相关推荐
此时不提桶,更待何时3 小时前
06-23-A-RabbitMQ生态集成详解
分布式·rabbitmq
m0_646429978 小时前
RabbitMQ 核心知识总结(生产实战版)
分布式·rabbitmq
DBA_G10 小时前
GBase 8c分布式数据库客户端工具 gsql
数据库·分布式
chunyublog10 小时前
Spark 词频统计练习
大数据·分布式·spark
acrel712 小时前
高速公路分布式光伏并网电能质量与安全保护方案应用
分布式·安全
IT小小猪14 小时前
# Hadoop 3.3.6 完全分布式集群部署知识库
hadoop·分布式·eclipse
此时不提桶,更待何时14 小时前
06-24-B-RabbitMQ面试与生产事故实战
分布式·面试·rabbitmq
来福猿14 小时前
分布式锁 Redis 实现源码分析:SETNX、过期时间与可重入设计
数据库·redis·分布式
此时不提桶,更待何时1 天前
06-17-A-RabbitMQ架构与存储原理详解
rabbitmq
Pniubi1 天前
分布式锁分类讲解
分布式