1.SpringBoot整合RabbitMQ之整合配置篇

实战背景 RabbitMQ实战第一阶段-RabbitMQ的官网拜读已经结束了,相信诸位童鞋或多或少都能入了个门,如果还是觉得迷迷糊糊似懂非懂的,那我建议诸位可以亲自去拜读拜读官网的技术手册或者看多几篇我的视频跟源码!因为接下来我们将进入第二阶段,即应用实战阶段

实战分析 应用实战,当然是指真正的在企业级项目中的应用。在这一阶段中,我将以目前流行的微服务架构为奠基,整合RabbitMQ实现项目中常见的一些业务模块并解决微服务系统或者分布式系统一些常见的问题。其中微服务框架将采用SpringBoot,实体映射框架将采用Mybatis,搭建一个企业级微服务项目,并以此来实战RabbitMQ涉及的各大技术点!

实战交流 在学习过程中,如果有相关问题,可以加我个人QQ:1974544863或者文末扫码加我个人微信进行交流,另外,感兴趣的童鞋可以加微信公众号,会不定时推送干货哦!

实战历程 从这一阶段开始,我将更换一下IDE为IDEA,当然啦,如果你想用eclipse,其实也是没多大问题的!那就让我们开始吧。

  1. 首先当然是创建一个Spring Boot的项目:通过IDEA提供的Spring Initializr插件构建(File->New->Project... 选择 Spring Initializr 进行构建,接下来就是maven构建项目的配置了,其中记得选中web的jar依赖,然后慢慢填一下就阔以了)。如图所示

2.下面我们就构建一个企业级的微服务项目吧。在其中我们需要加入rabbitmq,mysql,druid以及log4j等的jar包依赖,并构建好包目录结构,之后,我们创建一个数据库以及一个表“order_record”即订单记录表吧。相关的截图如下所示(相关源码在文末有提供下载,视频教程可以文末加微信咨询所取!)

3.在后续文章分享以及视频教程中涉及到的源码实战将以本篇博文搭建的项目做为奠基!

4.接下来为了测试项目搭建后是否可以运行,我们需要基于mvc三层模式开发一下简单的功能,首先当然是写个HelloWorldController,写个hello world请求方法,然后将项目跑起来,postman模拟一下请求,看看是否返回指定的数据。如下所示:

5.如果觉得上面的测试太简单了,那可以把上面的表 order_record 用mybatis逆向工程生成相应的mapper以及mapper.xml,然后也是在同个controller中写个请求方法:返回所有的订单列表,如下所示:

6.最后是核心重点的RabbitmqConfig的配置,作为RabbitMQ的全局配置

@Configuration
public class RabbitmqConfig {

private static final Logger log= LoggerFactory.getLogger(RabbitmqConfig.class);

@Autowired
private Environment env;

@Autowired
private CachingConnectionFactory connectionFactory;

@Autowired
private SimpleRabbitListenerContainerFactoryConfigurer factoryConfigurer;

/**
 * 单一消费者
 * @return
 */
@Bean(name = "singleListenerContainer")
public SimpleRabbitListenerContainerFactory listenerContainer(){
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factory.setConnectionFactory(connectionFactory);
    factory.setMessageConverter(new Jackson2JsonMessageConverter());
    factory.setConcurrentConsumers(1);
    factory.setMaxConcurrentConsumers(1);
    factory.setPrefetchCount(1);
    factory.setTxSize(1);
    return factory;
}

/**
 * 多个消费者
 * @return
 */
@Bean(name = "multiListenerContainer")
public SimpleRabbitListenerContainerFactory multiListenerContainer(){
    SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
    factoryConfigurer.configure(factory,connectionFactory);
    factory.setMessageConverter(new Jackson2JsonMessageConverter());
    factory.setAcknowledgeMode(AcknowledgeMode.NONE);
    factory.setConcurrentConsumers(env.getProperty("spring.rabbitmq.listener.concurrency",int.class));
    factory.setMaxConcurrentConsumers(env.getProperty("spring.rabbitmq.listener.max-concurrency",int.class));
    factory.setPrefetchCount(env.getProperty("spring.rabbitmq.listener.prefetch",int.class));
    return factory;
}

@Bean
public RabbitTemplate rabbitTemplate(){
    connectionFactory.setPublisherConfirms(true);
    connectionFactory.setPublisherReturns(true);
    RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
    rabbitTemplate.setMandatory(true);
    rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
        @Override
        public void confirm(CorrelationData correlationData, boolean ack, String cause) {
            log.info("消息发送成功:correlationData({}),ack({}),cause({})",correlationData,ack,cause);
        }
    });
    rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
        @Override
        public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
            log.info("消息丢失:exchange({}),route({}),replyCode({}),replyText({}),message:{}",exchange,routingKey,replyCode,replyText,message);
        }
    });
    return rabbitTemplate;
}
复制代码

6.如此一来,整个项目的搭建基本上没有多大问题了。所谓工欲善其事必先利其器,有了项目做为奠基,那么就阔以进行后面的所有实战了!

实战总结:基于SpringBoot的微服务项目基本上整合搭建好了,接下来就有了后续各大业务模块以及技术点的实战奠基,学习过程如果有相关问题,可以加文中提供的联系方式进行技术交流!另外,最近我将SpringBoot整合RabbitMQ一系列文章的精华进行了抽取,并发起了一场gitchat交流会,欢迎大家来交流!扫一扫下面的二维码即可进入哦

另外,相关文章也会同步在微信公众号发布哦,欢迎关注!学习过程如果有相关问题可以加QQ:1974544863或者QQ群:583522159 进行交流

附注:最近正值分享季,debug本着追求技术,热爱分享的信念,特地降低了学习门槛,几乎低价分享给广大童鞋学习! SpringBoot整合RabbitMQ完整视频教程学习地址->链接:pan.baidu.com/s/1bB67VCEx… 密码:gazq 这才是正版的链接地址,其他所有的链接或者高价骗取费用的都是盗版的,而且debug我是有提供学习过程技术交流的:QQ-1974544863 !!欢迎广大学员学习交流!

转载于:https://juejin.im/post/5b9cfdfbf265da0aee3f0421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值