ActiveMQ:如何使旧消息出队?

2024-02-09

我正在学习如何使用ActiveMQ,现在我们面临以下问题。

假设我在 ActiveMQ 上有一个名为 topic.test 的主题,它有两个订阅者。 在特定时刻,我只有一个订阅者在等待消息,而生产者则为我上面提到的主题发送一条消息。

好的,连接的订阅者收到了消息,但是其他订阅者在连接后不应该收到该消息吗?好吧,就我而言,这并没有发生:我的订阅者仅在连接时接收消息。他们不会收到在未连接时发送的所有其他消息。我可能做错了什么?

这是我为测试 ActiveMQ 编写的一些源代码。也许你能发现它出了什么问题。

我的消费者代码:

        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.setClientID("leitorTeste");
        conexao.start();
        Session sessao = conexao.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic fonte = sessao.createTopic("topic.test");
        MessageConsumer consumer = sessao.createConsumer(fonte);
        javax.jms.Message presente = null;
        while ((presente = consumer.receive()) != null) {
            System.out.println(((TextMessage) presente).getText());
        }
        consumer.setMessageListener(new LeitorMensagens());
        conexao.close();

这是我的生产者代码:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        Session sessao = conexao.createSession(true, Session.AUTO_ACKNOWLEDGE);
        connection.start();
        Destination destino = sessao.createTopic("topic.test");
        MessageProducer produtorMensagem = sessao.createProducer(destino);
        produtorMensagem.setDeliveryMode(DeliveryMode.PERSISTENT);
        TextMessage message = sessao.createTextMessage("Hi!");
        produtorMensagem.send(message);
        sessao.commit();
        connection.close();

我是否应该向 ActiveMQ 添加任何其他配置,以便我的消费者可以获得较旧的消息?


你必须让你的消费者“永久”。否则,一旦他们取消订阅,AMQ 就会“忘记”他们。为此,请使用Session.createDurableSubscriber() http://java.sun.com/j2ee/1.4/docs/api/javax/jms/Session.html#createDurableSubscriber%28javax.jms.Topic,%20java.lang.String%29

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActiveMQ:如何使旧消息出队? 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 十进制到八进制的转换[重复]

    这个问题在这里已经有答案了 可能的重复 十进制转换错误 https stackoverflow com questions 13142977 decimal conversion error 我正在为一个类编写一个程序 并且在计算如何将八进
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • 如何使用 H2、JPA 和 Hibernate 映射 JSON 列

    我在应用程序 MySQL 5 7 中使用 并且有 JSON 列 当我尝试运行集成测试时 它不起作用 因为 H2 数据库无法创建表 这是错误 2016 09 21 16 35 29 729 ERROR 10981 main org hiber
  • RxJS / Angular Observables 使用 1 个还是多个管道?

    具有以下内容 只是一个简单的示例 observable pipe map s gt s anything pipe filter t gt t gt 5 pipe map t gt t 5 subscribe XXX 为什么我应该使用 1
  • 在 Hibernate 3.3.1ga 和 HSQLDB 中使用 @Table 和架构名称

    如何使用 Hibernate 3 3 1ga 和 HSQLDB 在单元测试中实现此功能 Entity Table name CATEGORY schema TEST public static class Category 问题是 Hibe
  • 图像二进制解释:未知图像格式

    假设我有某种格式的图像 其二进制表示形式 例如来自 OpenCV 的 cv Mat 或来自 Android 的 YuvImage 未压缩 并将其数据解释为 YUV NV21 嗯 这是 DJI 提供的示例 SDK 差不多了 这是我所得到的 由
  • 如何从抽象基类覆盖模型字段的默认值

    我有一些代码 如下所示 class BaseMessage models Model is public models BooleanField default False some more fields class Meta abstr
  • 从 Clojure 映射中过滤 nil 值?

    最好的过滤方法是什么nilClojure 映射中的值 a x b nil c z gt a x c z 我会用 into filter comp some val a x b nil c z gt a x c z 正在做的some http
  • C++中传递成员函数指针

    我正在尝试传递一个函数指针 类型为QScriptEngine FunctionSignature QScriptValue QScriptContext QScriptEngine 到另一个函数 但我需要传递的函数是类的成员函数 我这样使用
  • 网络x绘制_网络x_边缘capstyle

    有谁知道在通过 例如 绘制networkx边缘时是否可以对线条属性进行细粒度控制draw networkx edges 我想控制线路solid capstyle and solid joinstyle 它们是 matplotlib Line
  • 选择 Atom 中所有找到的 RegEx 结果

    我正在尝试选择正则表达式查找找到的所有结果 以便我可以全部修改它们 不要用文本替换它们 例如 将它们全部大写Cmd K gt Cmd U 我知道我could通过重复来一项一项地做Cmd G Cmd K Cmd U 但对于大文件来说 这根本不
  • Laravel 4 绕过路由的维护模式

    我已将我的应用程序放下以进行维护php artisan down命令 我的自定义维护页面作为电子邮件输入 用于接受来自用户的电子邮件并存储在我的数据库中 以便在站点备份并再次运行时通知用户 但是当我使用 POST 提交表单时 我被重定向到维
  • mViewPager.getCurrentItem() 不返回第一个和最后一个寻呼机的正确位置

    我正在尝试获取视图寻呼机的页码 我遇到了很多Stackoverflow Q A 他们都说要使用 currentposition mViewPager getCurrentItem 但此方法不适用于第一页和最后一页 如何解决这个问题 提前致谢
  • 运行 Hadoop 作业时不是有效的 Jar

    我想运行 WordCount 示例 在eclipse中运行正确 在输出文件夹中存在输出文件 我制作了WordCount的jar文件并想通过命令运行它 hadoop jar WordCount jar Projects input Proje
  • 使用index.js在React中导入多个图像资源

    我一直在使用一种收集组件文件以供导出的模式index js文件放置在目录中 例如 index js file in components directory export Splash from Splash export Portfoli
  • 使用 Spring Boot 重命名 Liquibase 变更日志表

    我在用着Liquibase v 3 5 3 和 一起Spring 启动 v 1 5 3 我想使用 spring boot 属性文件更改 liquibase 变更日志表名称 我发现做到这一点的唯一方法是设置liquibase database
  • 找到具有相同权重的最大边数的生成树

    问题就在这里 给出一个带权无向连通图G 权重是恒定的 任务是提出一种算法 找到满足这两个条件的 G 的生成树的总权重 按优先级排序 生成树必须有相同权重的最大边数 与实际重复重量值无关 应最小化总生成树重量 这意味着 例如 权重为 120
  • 为什么.NET不验证BCL/CLR?

    BCL 和 CLR 中的所有 NET 程序集 以后仅使用 CLR 都是强命名和数字签名 https stackoverflow com questions 1334631 signing of net assemblies 提供数字证书是为
  • AngularJS,防止在茉莉花测试期间启动控制器上的 init 方法

    我有一个带有在实例化时启动的 init 方法的控制器 它做了很多对我的应用程序在实时环境中有用的事情 但这会扰乱我的单元测试间谍 在单元测试环境中实例化控制器时 有没有办法阻止它的调用 或者也许有一种方法可以在 web 应用程序上下文中自动
  • 这个R符号是什么意思?

    我将主题模型的文本上传到第四列 但显示的不是文本 而是此符号 当我将鼠标悬停在它上面时 我可以阅读文本 但是 我想确保这个符号不会误导我的结构主题模型分析 谢谢你 我刚刚运行主题模型没有问题 我认为这个符号表明单元格包含大文本 例如 几页单
  • R 将 RSelenium 驱动程序环境作为函数参数传递

    我可能没有看到明显的东西 无论如何我想创建函数来自动从远程驱动程序已处理的 URL 中提取文本 我想将 xpath 表达式和可以找到远程驱动程序的环境作为函数参数传递 library RSelenium url http stackover
  • ActiveMQ:如何使旧消息出队?

    我正在学习如何使用ActiveMQ 现在我们面临以下问题 假设我在 ActiveMQ 上有一个名为 topic test 的主题 它有两个订阅者 在特定时刻 我只有一个订阅者在等待消息 而生产者则为我上面提到的主题发送一条消息 好的 连接的