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

相关推荐
Ryan ZX12 分钟前
etcd 高可用分布式键值存储
数据库·分布式·etcd
大G的笔记本15 分钟前
分布式答案解析
分布式
Tadas-Gao1 小时前
MySQL存储架构解析:从数据无序到索引艺术的演进
数据库·分布式·mysql·微服务·云原生·架构
鸽鸽程序猿2 小时前
【RabbitMQ】工作模式实现
分布式·rabbitmq
Luke Ewin4 小时前
内网私有化分布式集群部署语音识别接口
人工智能·分布式·语音识别·asr·funasr·通话语音质检·区分说话人
小马爱打代码5 小时前
实战:分布式开源监控Zabbix
分布式·开源·zabbix
筑梦之人6 小时前
Spark-3.5.7文档2 - RDD 编程指南
大数据·分布式·spark
happy_king_zi7 小时前
RabbitMQ 是否也支持消费组
分布式·rabbitmq
兮动人9 小时前
PrettyZoo:优雅易用的 ZooKeeper 可视化管理工具
分布式·zookeeper·云原生·prettyzoo
回家路上绕了弯9 小时前
五分钟内重复登录 QQ 号定位:数据结构选型与高效实现方案
分布式·后端