一.RabbitTemplate介绍

RabbitTemplate:消息模板,在与Spring AMQP整合时,进行发送消息的关键类。

包括了可靠性投递消息方法、回调监听消息接口ConfirmCallBack、返回值确认接口ReturnCallBack等,同样需要进行注入到ioc容器中。

与spring整合需要实例化,与spring boot整合只需要在配置文件中配置就好了

相关配置

    @Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
return new RabbitTemplate(connectionFactory);
}

测试

发送消息

    @Test
public void testSend1(){
rabbitTemplate.convertAndSend("amqp.bean.topic", "amqp.send","hello spring");
}

结果:

 测试2:

    @Test
public void testSend(){
//创建消息
MessageProperties properties = new MessageProperties();
properties.getHeaders().put("send.amqp","测试发送信息");
Message message = new Message("hello spring amqp".getBytes(), properties); //发送
rabbitTemplate.convertAndSend("amqp.bean.topic", "amqp.send", message, message1 -> {
System.out.println("添加额外的设置");
message1.getMessageProperties().getHeaders().put("extra","额外信息");
return message1;
});
}

 测试结果:

二.SimpleMessageListenerContainer介绍

简单消息容器,对于消费者的配置项,这个类可以满足

监听多个队列、自动启动、自动声明,事务设置,设置消费者属性,批量消费、设置消息确认和自动确认模式、重回队列,异常捕获handler函数,消费者标签生成测虐,多占模式,设置监听器、转换器。

SimpleMessageListenerContainer可以进行动态设置,在运行的应用中动态修改其消费者数量的大小、接收消息模式等

配置:

    @Bean
public SimpleMessageListenerContainer simpleMessageListenerContainer(ConnectionFactory connectionFactory){
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(connectionFactory);
//设置监听的队列
container.setQueues(queue());
//设置当前消费者数量
container.setConcurrentConsumers(1);
container.setMaxConcurrentConsumers(5);
//重回队列
container.setDefaultRequeueRejected(false);
//签收机制
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
//消费端标签策略
container.setConsumerTagStrategy(queue-> queue+"_"+ UUID.randomUUID().toString());
//消息监听
container.setMessageListener((ChannelAwareMessageListener) (message, channel) -> System.out.println(new String(message.getBody())));
return container;
}

运行springboot主应用,

可以看到在rabbitmq的控制台中,有Container监听的队列。

Spring AMQP:RabbitTemplate SimpleMessageListenerContainer的更多相关文章

  1. RabbitMQ与Spring的框架整合之Spring AMQP实战

    1.SpringAMQP用户管理组件RabbitAdmin. RabbitAdmin类可以很好的操作RabbitMQ,在Spring中直接进行注入即可.注意,autoStartup必须设置为true, ...

  2. Spring AMQP + Rabbit 配置多数据源消息队列

    一般在稍微大一点的项目中,需要配置多个数据库数据源,最简单的方式是用 Spring 来实现,只需要继承 AbstractRoutingDataSource 类,实现 determineCurrentL ...

  3. Spring AMQP

    Spring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,很大方便我们使用RabbitMQ程序的相关开发. ...

  4. 使用Spring AMQP开发消费者应用

    前一篇中我们介绍了使用RabbitMQ Java Client访问RabbitMQ的方法.但是使用这种方式访问RabbitMQ,开发者在程序中需要自己管理Connection,Channel对象,Co ...

  5. 消息中间件——RabbitMQ(九)RabbitMQ整合Spring AMQP实战!(全)

    前言 1. AMQP 核心组件 RabbitAdmin SpringAMQP声明 RabbitTemplate SimpleMessageListenerContainer MessageListen ...

  6. 译: 1. RabbitMQ Spring AMQP 之 Hello World

    本文是译文,原文请访问:http://www.rabbitmq.com/tutorials/tutorial-one-spring-amqp.html RabbitMQ 是一个Brocker (消息队 ...

  7. spring amqp初步了解

    Rabbitmq简介 生产者会把消息发送给RabbitMQ的交换中心(Exchange),Exchange的一侧是生产者,另一侧则是一个或多个队列,由Exchange决定一条消息的生命周期--发送给某 ...

  8. Spring AMQP 源码分析 08 - XML 配置

    ### 准备 ## 目标 通过 XML 配置文件使用 Spring AMQP ## 前置知识 <Spring AMQP 源码分析 07 - MessageListenerAdapter> ...

  9. Spring AMQP 源码分析 06 - 手动消息确认

    ### 准备 ## 目标 了解 Spring AMQP 如何手动确认消息已成功消费 ## 前置知识 <Spring AMQP 源码分析 04 - MessageListener> ## 相 ...

随机推荐

  1. 单元测试中使用Spring的ReflectionTestUtils更方便

    1 简介 ReflectionUtils是Spring中一个常用的类,属于spring-core包:ReflectionTestUtils则属于spring-test包.两者功能有重叠的地方,而Ref ...

  2. 王颖奇 201771010129《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: A.仅对本类可见-private B.对所有类可见-public C.对本包和 ...

  3. 深入理解JS中的对象(一)

    目录 一切皆是对象吗? 对象 原型与原型链 构造函数 参考 1.一切皆是对象吗? 首先,"在 JavaScript 中,一切皆是对象"这种表述是不完全正确的. JavaScript ...

  4. 【Hadoop离线基础总结】Sqoop数据迁移

    目录 Sqoop介绍 概述 版本 Sqoop安装及使用 Sqoop安装 Sqoop数据导入 导入关系表到Hive已有表中 导入关系表到Hive(自动创建Hive表) 将关系表子集导入到HDFS中 sq ...

  5. OpenCV Error: Unspecified Error(The Function is not implemented)

    Ubuntu 或者 Debian 系统显示窗口的时候遇到了这个问题 error: (-2:Unspecified error) The function is not implemented. Reb ...

  6. 如何将项目发布到npm仓库

    有时候,我们希望将项目里的模块提升为公共模块,以便其他项目也能使用.在前端可以将模块发布到npm仓库,这样所有项目都可以通过 npm install youProject 使用模块了. 这个过程很简单 ...

  7. 多线程高并发编程(9) -- CopyOnWrite写入时复制

    CopyOnWrite写入时复制 CopyOnWrite,即快照模式,写入时复制就是不同线程访问同一资源的时候,会获取相同的指针指向这个资源,只有在写操作,才会去复制一份新的数据,然后新的数据在被写操 ...

  8. 浅谈HTTP和HTTPS

    HTTP和HTTPS协议 网络协议:计算机之间为了实现网络通信而达成的一种“约定”或“规则”,有了这种“约定”,不同厂商的生产设备,以及不同不同操作系统组成的计算机之间,就可以实现通信. HTTP(H ...

  9. 使用gitlab ci构建IOS包并发送通知消息到企业微信

    在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ...

  10. ambari hdp ssh链接错误

    错误信息: ERROR 2019-09-05 10:29:05,700 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:57 ...