官方文档:https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#boot-features-amqp

引入依赖:

  <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

发送消息代码:

@RestController
@RequestMapping("/")
public class SenderMsgController { @Autowired
private AmqpTemplate amqpTemplate; @RequestMapping(value = "/{str}")
public void testSend(@RequestParam("str") String str) throws InterruptedException {
for (int i = 0; i < 10; i++) {
int millis = 500;
Thread.sleep(new Long(millis));
if (i%2 == 1) {
String isr = "{\n" + "\t\"dd\":" + i + "}"; amqpTemplate.convertAndSend("DirectExchange","test.1",isr,new MyMessageConverter()); }else{
String isr = "{\n" + "\t\"dd\":" + i + "}";
amqpTemplate.convertAndSend("DirectExchange","test.2",isr,new MyMessageConverter());
}
System.out.println("第"+i+"次发送");
}
}
}
MyMessageConverter:
//MessagePostProcessor 接口可以对发送请求之前的Message 进行操作,这里我设置了contenttype为json格式
public class MyMessageConverter implements MessagePostProcessor {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setContentType(MessageProperties.CONTENT_TYPE_JSON);
return message;
}
}

创建交换机、队列并互相绑定设置路由key

@Component
public class AmqpAdminConfig { @Autowired
public AmqpAdmin amqpAdmin; @Bean
public DirectExchange createDirectExchange(){
DirectExchange directExchange = new DirectExchange("DirectExchange", false, false);
amqpAdmin.declareExchange(directExchange);
return directExchange;
} // @Bean
// public void createFanoutExchange(){
// amqpAdmin.declareExchange(new FanoutExchange("FanoutExchange",false,false));
// } @Bean
public Queue createQueue1(){
Queue queue = new Queue("queue-1", false, false, false);
amqpAdmin.declareQueue(queue);
return queue;
} @Bean
public Queue createQueue2(){
Queue queue = new Queue("queue-2", false, false, false);
amqpAdmin.declareQueue(queue);
return queue;
} @Bean
public void createBinding1(){
Binding bind = BindingBuilder.bind(createQueue1()).to(createDirectExchange()).with("test.1");
amqpAdmin.declareBinding(bind);
}
@Bean
public void createBinding2(){
Binding bind = BindingBuilder.bind(createQueue2()).to(createDirectExchange()).with("test.2");
amqpAdmin.declareBinding(bind);
} }

根据官方文档知道AmqpTemplate 和AmqpAdmin  已经自动配置,可直接注入使用,AmqpTemplate 封装了发送与接收的各种操作,AmqpAdmin  封装了针对交换机和消息队列的各种操作

SpringBoot Rabbitmq发送消息的更多相关文章

  1. Spring-boot JMS 发送消息慢的问题解决

    1:在<ActiveMQ 基于zookeeper的主从(levelDB Master/Slave)搭建以及Spring-boot下使用>(http://www.cnblogs.com/ys ...

  2. c# RabbitMQ 发送消息

    参考地址:<C#使用RabbitMQ> C#操作RabbitMQ需要引用RabbitMQ的DLL,地址是:http://www.rabbitmq.com/releases/rabbitmq ...

  3. RabbitMQ发送消息成功,但是接受不到消息

    commom模块为mq配置模块 分了多模块后消息队列无法自动创建,发现原因竟然是SpringBoot没有扫描到common模块内的配置类. 我们在XxxApplication启动类上添加@Compon ...

  4. 给RabbitMQ发送消息时,设置请求头Header。

    消费者的请求头 生产者设置请求头 由于消费者那里,@Payload是接受的消息体,使用了@Header注解,需要请求头,生产者这边就要设置请求头,然后rabbitTemplate再调用convertA ...

  5. SpringBoot Rabbitmq接收消息

    官网地址:https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#boot-features-amqp ...

  6. springboot项目整合rabbitMq涉及消息的发送确认,消息的消费确认机制,延时队列的实现

    1.引入maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  7. springboot整合rabbitMq实现消息延时发送

    实现思路:利用mq的ttl设置消息失效时间 当达到设置时间后通过交换机到达死信队列中,消费者端绑定读取死信队列中信息来达到延时发送消息的功能. demo 如下: (1)在pom.xml 中引入rabb ...

  8. SpringBoot | 第三十八章:基于RabbitMQ实现消息延迟队列方案

    前言 前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制.此机制,在原先对接银联支付时,银联的异步通知也是类似的,在第一次通知 ...

  9. springboot核心技术(五)-----消息(rabbitmq)

    消息 1. 大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 2. 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination) 当消息发送者发 ...

随机推荐

  1. 2.初识CronTrigger

    开发工具:Eclipse 代码下载链接:https://github.com/theIndoorTrain/QuartzDemo.git 前言: 在1.初始Quartz里面,我们介绍了quartz的一 ...

  2. 【期望dp 质因数分解】cf1139D. Steps to One

    有一种组合方向的考虑有没有dalao肯高抬啊? 题目大意 有一个初始为空的数组$a$,按照以下的流程进行操作: 在$1\cdots m$中等概率选出一个数$x$并添加到$a$的末尾 如果$a$中所有元 ...

  3. 【杂题总汇】HDU2018多校赛第九场 Rikka with Nash Equilibrium

    [HDU2018多校赛第九场]Rikka with Nash Equilibrium 又是靠这样一道题擦边恰好和第两百名分数一样~愉快

  4. mysql 命令 小结

    CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;创建中文数据库show gl ...

  5. sqlite的sql常用语句(笔记)

    1.复制一张表并重命名 比如已经创建好一个表 表名为"28165" 复制这个表. CREATE TABLE [33150] AS SELECT * FROM [28165] 2.根 ...

  6. 日期格式兼容iOS

    iOS不支持2016-02-11 12:21:12格式的日期 目前Safari可以支持的标准格式: MM-dd-yyyy yyyy/MM/dd MM/dd/yyyy MMMM dd, yyyy MMM ...

  7. swoole中swoole_timer_tick回调函数使用对象方法

    swoole_timer_tick的回调函数无法使用类似于array($this, 'method')来调用对象方法,所以我用一下方法变通了一下来调用 swoole_timer_tick(1000, ...

  8. 解决cmd 运行python socket怎么终止运行

    在cmd里启动python写了一个socket服务端的程序,但是启动之后由于监听连接的是一个死循环 这时想终止运行,发现按ctrl+c,ctrl+z,ctrl+d都不能终止 用ctrl+break解决

  9. python搭建友盟以及个推推送web服务器

    一.友盟客户端demo: 由于SDK原因,新版Android Studio的Android API 28 Platform无法同步新建项目, 所以我最终选择下载android-studio-bundl ...

  10. Idea搭建spring framework源码环境

    spring的源码目前放在github上,https://github.com/spring-projects/spring-framework 一.安装Git 二.安装Gradle gradle为解 ...