1、增加rabbitmq的依赖包

<!-- ampq 依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2、application.yaml文件中配置

spring:
rabbitmq:
host: localhost
port: 5672
username: admin
password: admin
publisher-confirms: true
virtual-host: /

3、RabbitMq的工厂连接和模板创建

@Configuration
public class RabbitConfig
{
@Value("${spring.rabbitmq.host}")
private String host; @Value("${spring.rabbitmq.port}")
private String port; @Value("${spring.rabbitmq.username}")
private String username; @Value("${spring.rabbitmq.password}")
private String password; @Value("${spring.rabbitmq.publisher-confirms}")
private Boolean publisherConfirms; @Value("${spring.rabbitmq.virtual-host}")
private String virtualHost; //创建工厂连接
@Bean
public ConnectionFactory connectionFactory(){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setAddresses(this.host);
connectionFactory.setUsername(this.username);
connectionFactory.setPassword(this.password);
connectionFactory.setVirtualHost(this.virtualHost);
connectionFactory.setPublisherConfirms(this.publisherConfirms); //必须要设置
return connectionFactory;
} //rabbitmq的模板配置
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) //必须是prototype类型
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(this.connectionFactory());
//template.setConfirmCallback(); 设置消息确认
//template.setReturnCallback();
return template;
}
}

4、创建交换机、创建队列、绑定交换机和队列

@Configuration
public class RabbitExchangeConfig
{
//直连交换机
@Bean
public DirectExchange defaultExchange() {
return new DirectExchange(RabbitConstant.EXCHANGE_NAME);
} //队列
@Bean
public Queue queue() {
return QueueBuilder.durable(RabbitConstant.QUEUE_NAME).build();
} //绑定
@Bean
public Binding binding() {
return BindingBuilder.bind(this.queue()).to(this.defaultExchange()).with(RabbitConstant.ROUTING_KEY);
}
}

5、消费者

@Component
public class RabbitSender implements RabbitTemplate.ConfirmCallback
{
@Autowired
private RabbitTemplate rabbitTemplate; public void sendMsg(String content) {
CorrelationData correlationId = new CorrelationData(UUID.randomUUID().toString());
this.rabbitTemplate.setConfirmCallback(this); //rabbitTemplate如果为单例的话,那回调就是最后设置的内容
this.rabbitTemplate.convertAndSend(RabbitConstant.EXCHANGE_NAME,
RabbitConstant.ROUTING_KEY, content, correlationId);
} //回调
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
System.out.println(" 回调id:" + correlationData);
if (ack) {
System.out.println("消息成功消费");
} else {
System.out.println("消息消费失败:" + cause);
}
}
}

6、消费者

@Configuration
public class RabbitReceive
{
@Autowired
private RabbitConfig rabbitConfig; @Autowired
private RabbitExchangeConfig rabbitExchangeConfig; @Bean
public SimpleMessageListenerContainer messageContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(rabbitConfig.connectionFactory());
container.setQueues(rabbitExchangeConfig.queue()); //设置要监听的队列
container.setExposeListenerChannel(true);
container.setMaxConcurrentConsumers(1);
container.setConcurrentConsumers(1);
container.setAcknowledgeMode(AcknowledgeMode.MANUAL); //设置确认模式手工确认
container.setMessageListener(new ChannelAwareMessageListener() {
@Override
public void onMessage(Message message, Channel channel) throws Exception {
byte[] body = message.getBody();
System.out.println("receive msg : " + new String(body));
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); //确认消息成功消费
}
});
return container;
}
}

spring boot 整合 RabbitMq (注解)的更多相关文章

  1. Spring Boot (十三): Spring Boot 整合 RabbitMQ

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

  2. Spring Boot 整合 rabbitmq

    一.消息中间件的应用场景 异步处理 场景:用户注册,信息写入数据库后,需要给用户发送注册成功的邮件,再发送注册成功的邮件. 1.同步调用:注册成功后,顺序执行发送邮件方法,发送短信方法,最后响应用户 ...

  3. Spring Boot整合Rabbitmq

    Spring Boot应用中整合RabbitMQ,并实现一个简单的发送.接收消息的例子来对RabbitMQ有一个直观的感受和理解. 在Spring Boot中整合RabbitMQ是一件非常容易的事,因 ...

  4. spring boot整合RabbitMQ(Direct模式)

    springboot集成RabbitMQ非常简单,如果只是简单的使用配置非常少,springboot提供了spring-boot-starter-amqp项目对消息各种支持. Direct Excha ...

  5. spring boot 2.x 系列 —— spring boot 整合 RabbitMQ

    文章目录 一. 项目结构说明 二.关键依赖 三.公共模块(rabbitmq-common) 四.服务消费者(rabbitmq-consumer) 4.1 消息消费者配置 4.2 使用注解@Rabbit ...

  6. Spring Boot整合Mybatis(注解方式和XML方式)

    其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...

  7. Spring Boot整合dubbo(注解的方式)

    一.创建项目 1.创建一个空的项目 2.在空的项目中添加两个Spring Boot模块,如下图所示 二.在provider模块中的pom文件中添加依赖 <dependency> <g ...

  8. spring boot 整合 RabbitMQ 错误

    1.错误 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spr ...

  9. Spring Boot整合RabbitMQ详细教程

    原文:https://blog.csdn.net/qq_38455201/article/details/80308771 1.首先我们简单了解一下消息中间件的应用场景 异步处理 场景说明:用户注册后 ...

随机推荐

  1. C# 中文判断

    原地址忘了,也是博客园的 /// <summary> /// 是否是 中文 /// </summary> /// <param name="CString&qu ...

  2. 税控服务器 TC5002UpdatePackage 安装更新

    Linux版税控服务器单税号版本税控应用:   TC5002UpdatePackage2008160711.zip         单税号服务器(型号:TCG-01S1) Linux版税控服务器20个 ...

  3. css 响应式布局

    移动端最让人闹心的就是在不同的手机要做错响应式布局适应各种手机,开始自己做这方面走了很多的弯路,响应式布局如果是部件,就按实际的大小单位px等设置,像宽可以按照百分比计算,长的可以百分比.auto 或 ...

  4. js循环对象,(多层数组)

    javaScript遍历对象.数组总结   在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用!     javaSc ...

  5. hive 的理解

    什么是Hive 转自: https://blog.csdn.net/qingqing7/article/details/79102691 1.Hive简介 Hive 是建立在 Hadoop 上的数据仓 ...

  6. 05_ssm基础(四)之Spring与持久层的整合

    30.31.spring对jdbc的支持jdbcTemplate 使用Spring的JDBC准备:  1):拷贝jar:       mysql-connector-java-5.1.11.jar:M ...

  7. linux安装jdk以及tomcat

    一.卸载旧jdk 1.检测原OPENJDK版本 java -version 查看是否安装了jdk,并且是什么版本 2.进一步查看JDK信息 rpm -qa|grep java tzdata-java- ...

  8. putty颜色调整

    右键window窗口--Changing Setting--window--Colours: * Default Foreground: 255/255/255 * Default Backgroun ...

  9. STOP OUR NEGATIVE THOUGHTS

    Do you ever feel like you're in over your head and at any moment you're going to burst? You're not a ...

  10. JMeter学习(五)集合点(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现. JMeter里面的集合点通过添加定时器 ...