这里只展示核心的代码,完整的代码请参见 SpringBoot整合RabbitMQ(完整版)

// 向发布订阅模式里面发送消息
public void sendPublish() {
    for (int i = 0; i < 5; i++) {
        // rabbitTemplate.convertSendAndReceive("exchange_fanout", "", "测试发布订阅模型:" + i);
        rabbitTemplate.convertAndSend("exchange_fanout", "", "测试发布订阅模型:" + i);

访问 http://localhost:8080/sendPublish

使用 convertAndSend 方法时的结果:输出时没有顺序,不需要等待,直接运行

使用 convertSendAndReceive 方法时的结果:使用此方法,只有确定消费者接收到消息,才会发送下一条信息,每条消息之间会有间隔时间

convertSendAndReceive(…):可以同步消费者。使用此方法,当确认了所有的消费者都接收成功之后,才触发另一个convertSendAndReceive(…),也就是才会接收下一条消息。RPC调用方式。

convertAndSend(…):使用此方法,交换机会马上把所有的信息都交给所有的消费者,消费者再自行处理,不会因为消费者处理慢而阻塞线程。

【MQ 系列】SprigBoot + RabbitMq 消息发送基本使用姿势 前面两篇博文,分别介绍了RabbitMq的核心知识点,以及整合SpringBoot的demo应用;接下来也该进入正题,看一下SpringBoot的环境下,如何玩转rabbitmq 本篇内容主要为消息发送,包括以下几点 RabbitTemplate 发送消息的基本使用姿势 自定义消息基本属性 自定义消息转换器AbstractMessageConverter 发送Object类型消息失败的case I. 基本使用姿势 1. 配置 我们借助SpringBoot 2.2.1.RELEASE + rabbitmq 3.7.5来 虽然并性已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,应该是写入数据库后就返回.由此可以看出,引入消息队列后,用户的响应时间就等于写入数据库的时间+写入消息队列的时间(可以忽略不计),引入消息队列后处理后,响应时间是串行的3倍,是并行的2倍。zeroMq不支持,activeMq和rabbitMq都支持。(2)并行方式:将注册信息写入数据库后,发送邮件的同时,发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间。 12.1.1介绍RabbitMQ RabbitMQ 是开源的高级消息队列协议(Advanced Message Queueing Protocol, AMQP) 的实现,用Erlang语言编写,... RabbitMQ 是开源的高级消息队列协议(Advanced Message Queueing Protocol, AMQP) 的实现,用Erlang 语言编写,支持多种客户端。RabbitMQ是目前应用相当广泛的消息间件(其他同类的消息处理间件有ActiveMQ、Kafka等)。在企业级应用、微服务应用RabbitMQ担当着十分重要的角色。例如,在业务服务模块解耦、异步通信、高并发限流、超时业务、数据延迟处理等都可以使用RabbitMQRabbitMQ的处理流程如图12-1所示。... 关于redis的发布订阅模式,大家应该都有听过,具体的我就不阐述了,其实本质和传统的MQ的发布订阅是差不多的,但是相对于其它几款MQ产品来说,redis的使用更加便捷,也更加轻量化,不需要单独去搭建集成一套繁重的MQ框架,但缺点也很明显,redis发布的消息不会持久化,所以当某一台服务器出现问题的时候,这个消息会被丢失掉,就会导致数据问题,所以在考虑使用之前要慎重,当前的业务是否对数据一致性要求很...     就像Spring Framework和其它一些项目提供了一些高度抽象,Spring AMQP提供的‘template’扮演者关键的角色。定义者主要操作的接口是AmqpTemplate。这些操作包含了发送和接收消息的一般操作。换种说法,它们不是某个实现所专有的,所以AMQP存在于名称里。这个接口的实现与AMQP协议的实现紧密关联。不像JMS, 引入了spring-boot-starter-amqp模块,他引入了spring-messaging模块,包括引入了spring-rabbit模块,怎么配置使用呢, <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</arti...