springboot2.0集成rabbitmq_springboot2.0集成mq-程序员宅基地

技术标签: springboot2.0集成rabbitmq  

springboot2.0集成rabbitmq

springboot2.0集成rabbitmq
最近需要用上rabbitmq,项目是用springboot搭建的,所以就要在springboot环境下单独集成rabbitmq,写这篇文章用来记录下。不多说了,进入正题。

1.首先引入Maven依赖:spring-boot-starter-amqp

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-amqp</artifactId>

2.application.yml中引入配置项:

spring:

  rabbitmq:

        host: 127.0.0.1

        port: 5672

        username: root

        password: root

        virtual-host: vhost_one

       publisher-confirms: true  #开启发送确认

       publisher-returns: true   #开启发送失败退回

3.生产者:

import org.springframework.amqp.core.Binding;

import org.springframework.amqp.core.BindingBuilder;

import org.springframework.amqp.core.Queue;

import org.springframework.amqp.core.TopicExchange;

import org.springframework.amqp.rabbit.connection.ConnectionFactory;

import org.springframework.amqp.rabbit.core.RabbitTemplate;

import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

@EnableAutoConfiguration

public class RabbitMqConfig {

@Bean

public RabbitTemplate setRabbitTemplate(ConnectionFactory connectionFactory) {

RabbitTemplate rabbitTemplate = new RabbitTemplate();

rabbitTemplate.setConnectionFactory(connectionFactory);

rabbitTemplate.setExchange(“topicExchange”);

// 设置消息内容序列化方式

rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());

return rabbitTemplate;

}

/**

  • 生成主题路由器

  • @return

*/

@Bean(“topicExchange”)

public TopicExchange topicExchange() {

return new TopicExchange(“topicExchange”, true, false);

}

/**

  • 定义发送短信的队列

  • @return

*/

@Bean(“sendSMSQueue”)

public Queue sendSMSQueue() {

return new Queue(“sendSMS”, true, false, false);

}

/**

  • 创建发送短信的队列和主题交换机的绑定关系

  • @param queue

  • @param exchange

  • @return

*/

@Bean

public Binding bingExchangeANDqueue(@Qualifier(“sendSMSQueue”)Queue queue, @Qualifier(“topicExchange”)TopicExchange exchange) {

return BindingBuilder.bind(queue).to(exchange).with(“common.sendSMS.#”);

}

}

  上面配置好了RabbitTemplate和路由和队列以及绑定关系,在项目中直接调用RabbitTemplate的发送消息的方法即可:

@Autowired

private RabbitTemplate rabbitTemplate;

@Override

public void send() {

rabbitTemplate.convertAndSend(“common.sendSMS.msg”, “rabbitmq发送短信1给你了”);

}

4.消费者:

application.yml中引入配置项和生产者一样:

spring:

rabbitmq:

  host: 127.0.0.1

  port: 5672

  username: root

  password: root

  virtual-host: vhost_one

    同时也需要设置RabbitConfiguration来设置序列化的方式,就用spring提供的Jackson2JsonMessageConverter类来方序列化和序列化,RabbitConfiguration类如下:

import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;

import org.springframework.amqp.rabbit.connection.ConnectionFactory;

import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;

import  org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;





@Configuration

public class RabbitConfiguration {





@Bean

public SimpleRabbitListenerContainerFactory myFactory(

       SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) {

           SimpleRabbitListenerContainerFactory factory =

          new SimpleRabbitListenerContainerFactory();

           configurer.configure(factory, connectionFactory);

           factory.setMessageConverter(new Jackson2JsonMessageConverter());

           return factory;

       }

}

调用示例:

import org.springframework.amqp.rabbit.annotation.EnableRabbit;

import org.springframework.amqp.rabbit.annotation.RabbitListener;

import org.springframework.stereotype.Component;





@Component

@EnableRabbit

public class Consumer {



    @RabbitListener(queues = "sendSMS", containerFactory = "myFactory")

    public void sendMsg(String content) {

                 System.out.println(content);

     }

}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w307145506/article/details/86063986

智能推荐

SEO学习(十二)——禁止收录-程序员宅基地

文章浏览阅读763次。有时站长不希望抓取和收录某些页面,为确保页面不被收录,需要使用robots文件或Meta Robots标签。1、robots文件 搜索引擎蜘蛛访问网站时,会先查看网站根目录下有没有一个命名为robots.txt的纯文本文件,robots.txt用于指令搜索引擎禁止抓取网站某些内容或指定允许抓取某些内容。robots.txt文件有记录组成,记录之间以空行分开,记录格式为::2、me_禁止收录

内容增强网络表示学习的一般框架(A General Framework for Content-enhanced Network Representation Learning)(3)_增强网络节点的表示学习-程序员宅基地

文章浏览阅读328次。在上篇内容增强网络表示学习的一般框架(A General Framework for Content-enhanced Network Representation Learning)(2)对整个网络进行了简单的处理,得到了一个边集关系的文件,我们接下来的节点表示工作,就基于该数据集,当然,要进行将孤立节点也整进去。这里,将使用node2vec来进行嵌入操作,因为这个算法可以看作是对DeepWalk的一个扩展,也比较成熟。简单抄抄介绍:node2vec是一种综合考虑DFS邻域和BFS邻域的graph _增强网络节点的表示学习

使用docker快速搭建hive环境_docker linux 操作 hive-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏23次。记录一下使用docker快速搭建部署hive环境_docker linux 操作 hive

python模拟抛硬币_python实现简单随机模拟——抛呀抛硬币-程序员宅基地

文章浏览阅读199次。还是在上次提到的数据之魅那本书,看到模拟这章,有个python模拟脚本,但书上不全,就自己简单写了下。流程:在不同的平衡参数p(为0.5时为均匀的)下,模拟60次实验,每次投硬币8次,统计正面朝上的次数,并作图。import randomimport matplotlib.pyplot as pltrepeats, tosses = 60, 8# p为平衡参数,tosses为每次重复试验中投掷硬币..._python编写一个程序模拟抛硬币的结果,总共抛50次,每隔0.1秒输出一个结果(结果分为

在VMware虚拟机环境下为msdos7.1安装masm_masm.zip-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏11次。第一次写博客,没有啥头绪。发现在网上关于VMware虚拟机环境中为dos安装masm的教程甚少,于是自己琢磨,最后也是安装好了。直接开始吧!1.首先,在这个网站(google搜索"masm下载"第一个)点击masm.zip下载masm的压缩文件。2.将下载好的masm.zip文件解压,过程略。3.打开VMware虚拟机,将ms-dos关机。4.点击编辑虚拟机_masm.zip

s5p6818/fs4418系统移植实验三 常用串口终端工具安装_rp6818串口驱动-程序员宅基地

文章浏览阅读605次。实验三 常用串口终端工具安装【实验目的】 在Windows中安装串口终端工具,掌握常见串口终端工具的配置和使用方法。 说明:在实验中命令行提示符为“$”表示在主机上运行,“#”表示在目标板上运行。【实验环境】Windows Ubuntu 12.04 64位发行版 FS6818平台【实验步骤】将 “案例源码\第一天\工具软件\ putty.exe”拷贝到桌面,或拷贝至任一文件夹然后发送快捷方式到桌面。 双击桌面上的putty.exe图标,弹出如下的对话框..._rp6818串口驱动

随便推点

MySQL 数据库问题分析思路_innodb: file (unknown): 'read' returned os error 2-程序员宅基地

文章浏览阅读1.6k次。最近后台服务突然出现了连接池不够用的情况,不定时的会抛出java.lang.IllegalStateException: Pool not open2019-09-06 08:21:52.701->java.lang.IllegalStateException: Pool not openjava.lang.IllegalStateException: Pool not open..._innodb: file (unknown): 'read' returned os error 205. cannot continue operat

CRC16/Modbus JAVA版本_crc-16/modbus x16+x15+x2+1 java-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏3次。网上找一个JAVA 版CRC16校验Modbus版都很多不正确,记录一下,方便其他人。CRC-16/Modbus x^16 + x^15 + x^2 + 1 (0x8005)验证http://www.ip33.com/crc.htmlCRC16M.java/** * CRC-16/Modbus x^16 + x^15 + x^2 + 1 (0x8005) *..._crc-16/modbus x16+x15+x2+1 java

用Java 处理 XML 数据_java 处理xml-程序员宅基地

文章浏览阅读5.8k次,点赞3次,收藏3次。看起来这是个常规性的动作。不知道什么时候你就需要用JAVA处理一下XML。虽说现在用XML作为媒体进行数据交换不是那么有效率(你可以试着Google “为啥不用XML” 之类的了解了解),不过鉴于很多古板的系统只能支持长胡子的技术实现,所以这方面也要照顾一下退休人士。了解背景会让你聊天的时候显得牛一些。Java原生内置的处理XML的技术基本有这么几种:DOM,SAX,Stax_java 处理xml

linux 服务器添加硬盘后系统不显示问题_插入到服务器的硬盘,在操作系统没有-程序员宅基地

文章浏览阅读2.7k次。新增硬盘后 fdisk -l不显示硬盘echo “- - -” > /sys/class/scsi_host/host0/scanecho “- - -” > /sys/class/scsi_host/host1/scanecho “- - -” > /sys/class/scsi_host/host2/scan在fdisk -l即可以看到硬盘了..._插入到服务器的硬盘,在操作系统没有

vue中操作数组的方法(超详细)_vue 数组-程序员宅基地

文章浏览阅读2w次,点赞12次,收藏63次。1,锁定数组的长度(只读模式)[ Array.join() ]var a = [1,2,3] //定义一个数组<br>Object.defineProperty(a,"length",{ writable:false}) //将a数组的长度属性设为只读<br>a.length = 0 //将a的长度改为0<br>console.log(a.length); //打印a数组的长度,还是32、将数组合并成字符串(返回字符串)[ Array.join_vue 数组

Opencv--20行代码实现椭圆检测_cv2找椭圆-程序员宅基地

文章浏览阅读1.8w次,点赞9次,收藏59次。本文环境:opencv+python3.4之前在实验室看到了8000行的椭圆检测,然后就手痒了。。。当然,人家的研究成果很牛叉,我的只算是没事瞎Happy各位客官就看着玩吧。代码中有两处参数可以更改。准确率一般。import cv2import numpy as npfrom matplotlib import pyplot as pltimport mathimg=cv2.imrea_cv2找椭圆