目录

0、前言

1、消息流程

2、添加依赖

3、添加配置

4、新建配置类

5、新建生产者接口

6、新建生产者实现类

7、新建生产者控制器类

8、测试


0、前言

需要已经安装RabbitMQ,并且启动、配置好用户。参考《基于CentOS6.5安装RabbitMQ》,《基于CentOS6.5使用RabbitMQ(二)》,《基于CentOS6.5使用RabbitMQ(三)》。

1、消息流程

生产者,消费者,消息

内部消息:Exchange,Binding,Queues

2、添加依赖

在pom.xml中添加rabbitmq的依赖:

<!-- 引入rabbitmq依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

3、添加配置

# rabbitmq配置
mq.rabbit.host=**.**.**.**
mq.rabbit.port=5672
mq.rabbit.virtualHost=/
mq.rabbit.username=admin
mq.rabbit.password=admin

4、新建配置类

RabbitMQConfig.java
/*** @Auther: chisj chisj@foxmal.com* @Date: 2018-11-12 15:35* @Description:*/
@Component
@Slf4j
@ConfigurationProperties
public class RabbitMQConfig {@Value("${mq.rabbit.host}")public String mqRabbitHost;@Value("${mq.rabbit.port}")public int mqRabbitPort;@Value("${mq.rabbit.username}")public String mqRabbitUserName;@Value("${mq.rabbit.password}")public String mqRabbitPassword;@Value("${mq.rabbit.virtualHost}")public String mqRabbitVirtualHost;public static String EXCHANGE_NAME = "exchange-name";public static String QUEUE_NAME = "queue-name";public static String ROUTING_KEY = "routing-key";@Beanpublic ConnectionFactory connectionFactory() {CachingConnectionFactory connectionFactory = new CachingConnectionFactory(this.mqRabbitHost,this.mqRabbitPort);connectionFactory.setUsername(this.mqRabbitUserName);connectionFactory.setPassword(this.mqRabbitPassword);connectionFactory.setVirtualHost(this.mqRabbitVirtualHost);connectionFactory.setPublisherConfirms(true);return connectionFactory;}@Beanpublic RabbitTemplate rabbitTemplate() {RabbitTemplate template = new RabbitTemplate(connectionFactory());return template;}@Beanpublic DirectExchange defaultExchange() {return new DirectExchange(EXCHANGE_NAME);}@Beanpublic Queue queue() {return new Queue(QUEUE_NAME, true);}@Beanpublic Binding binding() {return BindingBuilder.bind(queue()).to(defaultExchange()).with(ROUTING_KEY);}@Beanpublic SimpleMessageListenerContainer messageContainer() {SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory());container.setQueues(queue());container.setExposeListenerChannel(true);container.setMaxConcurrentConsumers(1);container.setConcurrentConsumers(1);container.setAcknowledgeMode(AcknowledgeMode.MANUAL);container.setMessageListener(new ChannelAwareMessageListener() {public void onMessage(Message message, com.rabbitmq.client.Channel channel) throws Exception {byte[] body = message.getBody();log.info("消费端接收到消息 : " + new String(body));channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);}});return container;}}

5、新建生产者接口

ProductService.java
/*** @Auther: chisj chisj@foxmal.com* @Date: 2018-11-12 15:37* @Description:*/
public interface ProductService {/*** 保存*/public int save(String productName);}

6、新建生产者实现类

ProductServiceImpl.java
/*** @Auther: chisj chisj@foxmal.com* @Date: 2018-11-12 15:39* @Description:*/
@Service("productServiceImpl")
@Slf4j
public class ProductServiceImpl implements ProductService, RabbitTemplate.ConfirmCallback {private RabbitTemplate rabbitTemplate;public ProductServiceImpl(RabbitTemplate rabbitTemplate){this.rabbitTemplate=rabbitTemplate;this.rabbitTemplate.setConfirmCallback(this);}/*** 保存** @param productName*/@Overridepublic int save(String productName) {//执行保存String uuid = UUID.randomUUID().toString();CorrelationData correlationId = new CorrelationData(uuid);rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, RabbitMQConfig.ROUTING_KEY, productName, correlationId);return 0;}@Overridepublic void confirm(CorrelationData correlationData, boolean ack, String cause) {log.info("消息id:" + correlationData);if (ack) {log.info("消息发送确认成功");} else {log.info("消息发送确认失败:" + cause);}}
}

7、新建生产者控制器类

ProductController.java
/*** @Auther: chisj chisj@foxmal.com* @Date: 2018-11-12 15:42* @Description:*/
@RestController
@RequestMapping("/Product")
public class ProductController {@Resourceprivate ProductService productService;@RequestMapping("/save")public String save(String productName) {productService.save(productName);return "product save success.";}}

8、测试

在postman中请求{{url}}/Product/save这个端子

查看后台log

【Spring Boot】--整合RabbitMQ相关推荐

  1. spring boot整合RabbitMQ —— 十分钟急速上手

    安装运行rabbitmq 1.docker安装rabbitmq: docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq ...

  2. Spring Boot 整合 RabbitMQ 实现

    Spring Boot 整合 RabbitMQ 实现 1. 开发环境搭建 1.1 pom配置 1.2 application.yml配置 2. 消费者模块(springboot-rabbitmq-co ...

  3. Spring Boot: Spring Boot 整合 RabbitMQ

    前言 RabbitMQ 是一个消息队列,说到消息队列,大家可能多多少少有听过,它主要的功能是用来实现应用服务的异步与解耦,同时也能起到削峰填谷.消息分发的作用. 消息队列在比较主要的一个作用是用来做应 ...

  4. 【消息中间件】Spring Boot整合RabbitMQ

    简介 在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQ 尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate ...

  5. Spring boot整合rabbitmq

    一.生产者 1.pom.xml <properties><maven.compiler.source>8</maven.compiler.source><ma ...

  6. RabbitMQ使用及与spring boot整合

    1.MQ 消息队列(Message Queue,简称MQ)--应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...

  7. rabbitmq fanout java_spring boot整合RabbitMQ实例详解(Fanout模式)

    1.Fanout Exchange介绍 Fanout Exchange 消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略. 如上图所示 ...

  8. Spring Boot 整合——Spring Boot整合kafka整合

    Spring Boot 整合之前的内容 项目名称 描述 地址 base-data-mybatis 整合mybatis-plus(实际上官方教程已经很多,只做了自定义插件) 未完成 base-jpa J ...

  9. Spring Boot整合elasticsearch实现全文检索

    文章目录 1.引入 1.1 Luence 1.2 Solr 1.3 ElasticSearch 2. ElasticSearch安装 2.1 云服务器安装 2.1.1. docker安装 2.1.2 ...

  10. spring boot整合spring security笔记

    最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...

最新文章

  1. 关于FillSchema与Fill
  2. MyEclipse创建struts.xml
  3. “科学学”视角下的科研工作者行为研究
  4. 倒计时 5 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  5. Vue.js学习笔记(一) - 起步
  6. java基础 泛型类的定义
  7. CMSIS Driver
  8. Axure RP--快捷键大全(常用快捷键)
  9. 3DsMax导出插件编写(二)——常规SDK方法进行信息获取和保存文件
  10. 程序员优秀开源免费软件推荐
  11. iptables路由转换
  12. 什么是水货?如何辨别水货手机?水货手机能不能用?
  13. HTML5 案例学习笔记
  14. 英文金曲大赛c语言,英文歌曲_最激情!佐治亚理工开学典礼欢迎辞_沪江英语
  15. C语言入门知识1(零基础新手适用)
  16. 古典概型、几何概型与概率的区别与联系
  17. 商务手机最大突破是打破墨守成规的工作方式
  18. 1005【顺序结构】马克与爸爸的年龄问题
  19. 相对论通俗演义(1-10) 第九章
  20. 软件/APP/产品投放渠道分类大全

热门文章

  1. 使用C#.NET WebBrowser控件导航到不同的网站出现 所请求的资源正在使用中。 (从HRESULT异常:0x800700AA)
  2. php 生成纯黑白图片,使用CSS将彩色图片转换为黑白图片
  3. oracle 安装 step6,Tecnomatix16.0.1节点锁定型许可安装手册Win10
  4. python 简单方式红绿灯状态识别
  5. android版手机qq 5.0,手机QQ5.0安卓版今日正式发布 手机QQ5.0更新升级内容介绍
  6. 单身女生看过来:你为什么没有男朋友的20个原因
  7. 16 tia 内容说明 安装包_TIA Portal V16 软件安装包 安装教程 授权
  8. 人生路上前进的方向----有几条线贯穿自己的人生
  9. 达梦数据库(DM)——命令方式开启达梦数据库本地归档的具体方法
  10. Excel日期修改为统一月份