ActiveMQ消息投递方式一共有四种:同步投递、异步投递、延迟投递和定时投递。

同步发送:消息生产者使用持久(Persistent)传递模式发送信息的时候,Producer.send()方法会被阻塞,直到broker发送一个确认消息给生产者(ProducerAck),这个确认消息按时broker已经成功接收到消息并把消息保存到二级存储中。

异步投递

如果应用程序能够容忍一些消息的丢失,那么可以使用异步发送。异步发送不会在受到broker的确认之前一直阻塞Producer.send方法。

如果想要使用异步,在brokerURL中增加jms.alwaysSyncSend=false&jms.useAsyncSend=true属性

1. 如果设置了alwaysSyncSend=true系统将会忽略useAsyncSend设置的值都采用同步。

2. 当alwaysSyncSend=false时,“NON_PERSISTENT”(非持久化),事务中的消息将使用“异步发送”

3. 当alwaysSyncSend=false时,如果指定了useAsyncSend=true,“PERSISTENT”类型的消息使用异步发送。如果useAsyncSend=false,“PERSISTENT”类型的消息使用同步发送。

总结:默认情况(alwaysSyncSend=false,useAsyncSend=false),非持久化消息,事务内的消息均采用异步发送;对于持久化消息采用同步发送。

异步投递如何确认发送成功:

异步投递丢失消息的场景是:生产者设置UserAsyncSend=true,使用producer.send(msg)持续发送消息。

由于消息不阻塞,生产者会认为所有send的消息均被成功发送至MQ。如果MQ突然宕机,此时生产者端内存中尚未被发送至MQ的消息都会丢失。这时,可以给异步投递方法接收回调,以确认消息是否发送成功。

延迟投递和定时投递

关于延迟投递,请参考《springBoot整合ActiveMQ实现延时发现消息》。关于定时投递,就是使用定时任务发送消息,这里一笔带过,请自行查阅文档。

文章转发自[1],到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!

Reference

[1]https://www.cnblogs.com/flyinghome/p/12316403.html

ActiveMQ消息投递方式之异步投递【转】的更多相关文章

  1. ActiveMQ消息的延时和定时投递

    ActiveMQ对消息延时和定时投递做了很好的支持,其内部启动Scheduled来对该功能支持,也提供了一个封装的消息类型:org.apache.activemq.ScheduledMessage,只 ...

  2. 第4节 Scala中的actor介绍:1、actor概念介绍;2、actor执行顺序和发送消息的方式

    10.    Scala Actor并发编程 10.1.   课程目标 10.1.1.    目标一:熟悉Scala Actor并发编程 10.1.2.    目标二:为学习Akka做准备 注:Sca ...

  3. Swoole异步投递task任务

    [使用场景] Swoole的task模块可以用来做一些异步的慢速任务.耗时场景.如webim中发广播,发送邮件等,把这些任务丢给task进程之后,worker进程可以继续处理新的数据请求,任务完成后会 ...

  4. ActiveMQ消息的发送原理

    持久化消息和非持久化消息的发送策略:消息同步发送和异步发送 ActiveMQ支持同步.异步两种发送模式将消息发送到broker上.同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消 ...

  5. 消息中间件-activemq消息机制和持久化介绍(三)

    前面一节简单学习了activemq的使用,我们知道activemq的使用方式非常简单有如下几个步骤: 创建连接工厂 创建连接 创建会话 创建目的地 创建生产者或消费者 生产或消费消息 关闭生产或消费者 ...

  6. Activemq消息确认机制 --转载

      转自:http://blog.csdn.net/czp11210/article/details/47022639 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存 ...

  7. ActiveMQ 消息队列服务

      1 ActiveMQ简介 1.1 ActiveMQ是什么 ActiveMQ是一个消息队列应用服务器(推送服务器).支持JMS规范. 1.1.1 JMS概述 全称:Java Message Serv ...

  8. 2015年12月10日 spring初级知识讲解(三)Spring消息之activeMQ消息队列

    基础 JMS消息 一.下载ActiveMQ并安装 地址:http://activemq.apache.org/ 最新版本:5.13.0 下载完后解压缩到本地硬盘中,解压目录中activemq-core ...

  9. ActiveMQ消息的可靠性机制(转)

    文章转自:http://www.linuxidc.com/Linux/2013-02/79664.htm 1.JMS消息确认机制 JMS消息只有在被确认之后,才认为已经被成功地消费了.消息的成功消费通 ...

  10. ActiveMQ消息队列从入门到实践(4)—使用Spring JMS收发消息

    Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API .在JMS出现之前,每个消息代理都有私有的API,这就使得不同代理之间的消息代 ...

随机推荐

  1. JS代码执行

  2. ABAQUS阻尼设置

    结构阻尼 瑞利阻尼

  3. 震惊!C++程序真的从main开始吗?99%的程序员都答错了

    嘿,朋友们好啊!我是小康.今天咱们来聊一个看似简单,但实际上99%的C++程序员都答错的问题:C++程序真的是从main函数开始执行的吗? 如果你毫不犹豫地回答"是",那恭喜你,你 ...

  4. vue watch监听路由变化

    vue watch监听路由变化 // 监听 this.$route.path // watch监听非DOM元素的改变 watch:{ '$route.path':function(to,from){ ...

  5. JOKER 前端框架:自带云端可视化 IDE 的创新利器

    一.框架概述 在当今前端开发的多元化领域中,JOKER 前端框架犹如一颗璀璨的明星,以其独特而强大的功能,为开发者开辟了一条高效.便捷的创新之路. JOKER 不仅仅是一个普通的框架,它更是一个综合性 ...

  6. SQL INSERT批量插入方式

    1.常规INSERT写法   INSERT INTO ... VALUES (...); INSERT INTO 表名( `字段1`, `字段2`) VALUES ('字段1的值', '字段2的值') ...

  7. Delphi CheckListBox 用法

    for i := CheckListBox1.Items.Count-1 downto 0 do //从后面往前面删 begin if CheckListBox1.Checked[i] then // ...

  8. 【Linux】1.1 Linux课程介绍

    Linux课程介绍 1. 学习方向 linux运维工程师: 维护linux的服务器(一般大型企业) linux嵌入式工程师: linux做驱动开发,或者linux的嵌入式 linux下开发项目 2. ...

  9. 11. RabbitMQ 消息队列 Federation (Exchange 交换机和 Queue队列) + Shovel 同步的搭建配置

    11. RabbitMQ 消息队列 Federation (Exchange 交换机和 Queue队列) + Shovel 同步的搭建配置 @ 目录 11. RabbitMQ 消息队列 Federat ...

  10. RK356X网口限速

    1. 参考资料 Linux 上的虚拟网络接口,主要要了解一下 IFB,对输入的流量进行整形 https://lyyao09.github.io/2020/06/13/linux/An-introduc ...