当前位置: 首页 > 知识库问答 >
问题:

如何重新发送未确认的主动 MQ 消息?

公西翼
2023-03-14

我正在处理一个套接字 IO 应用程序,该应用程序使用来自 ActiveMQ 队列的消息。我正在为节点JS使用踩踏库

在大多数情况下,它工作正常,但我需要能够重新发送未确认的消息。跳过 amq.ack(消息)的消息不会被重新尝试并显示为正在等待 ActiveMQ Web 控制台。有没有办法让我重新发送它们?

const subscribeHeaders = {
    destination,
    ack: 'client-individual'
};

amq.subscribe(subscribeHeaders, (error, message) => {
    if (error) {
        logger.error(`subscribe error ${error.message}`);
        return;
    }

    message.readString('utf-8', (err, body) => {
        if (err) {
            logger.error(`read message error ${err.message}`);
            return;
        }
        const notificationData = JSON.parse(body);

        const { deviceId } = notificationData;

        if (io.sockets.adapter.rooms[deviceId]) {
            io.to(deviceId).emit('notification', notificationData);
            amq.ack(message);
        }
    });
});

共有1个答案

盖锐进
2023-03-14

如果您不确认消息,它们将保持挂起状态,直到您确认它们或关闭它们所锁定的使用者(或连接)为止。在你的情况下,你也许可以通过取消订阅来获得释放,并让那些消息重新发送给另一个消费者。

 类似资料:
  • 我将不折不扣地学习以下教程:https://www.rabbitmq.com/tutorials/tutorial-two-java.html。 我以这样的方式启动RabbitMQ服务器: 我生成了两个消费者,当我Ctrl+C其中一个时,另一个正在运行的消费者不会接收到最初发往前一个消费者的消息。如何在Ctrl+C'ing从一个消费者中重新传递消息? 编辑:我现在正在通过'brew'安装Rabbi

  • 问题内容: 我已经编写了一个函数,希望在提交表单之前显示确认消息。我应该如何添加我的条件。下面是我的代码。 问题答案: 解决方案是使用ajax属性。 beforeSend是发送之前的请求前回调函数.beforeSend函数中返回false将取消请求。 AJAX

  • 1、可以用定时器定时推送数据 require_once __DIR__ . '/Workerman/Autoloader.php'; use WorkermanWorker; use WorkermanLibTimer; $worker = new Worker('websocket://0.0.0.0:1234'); // 进程启动后定时推送数据给客户端 $worker->onWorkerSt

  • 我正在开发一个可以被描述为自定义WMQ消息路由器/转发器的东西。目前,我在处理通过MQ发送的JMS消息时遇到了一些非常令人困惑的问题。我能够通过JMS接收来自Java应用程序的消息发送(以MQ作为传输),但不能将消息发送到JMSendpoint上侦听的Java应用程序。 直接通过JMS发送: 通过我的应用程序发送: RFH2中的所有元素也包含type。文件夹中的元素顺序不同,但根据异常情况,问题应

  • 我已经设置了AWS SNS设置与一个主题说'a'。我正在使用Http订阅这个SNS主题(尝试了手动使用AWS控制台联机和使用Java代码)。在这两种情况下,我得到的都是“待确认”。但是,SNS不向提供的URL发送初始“SubscriptionConfironment”。 请注意,我的endpoint已准备好接收http POST通知。当我从我的身边手动发布一个帖子时,我会看到我的servlet正在

  • 在官方的akka 2.0.4文档中,它说: actor重新启动只替换实际的actor对象;邮箱的内容不受重新启动的影响,因此在postRestart钩子返回后,将继续处理邮件。不会再收到触发异常的消息。在重新启动时发送给参与者的任何消息都将像往常一样排队到其邮箱。 我唯一能想到的是,如果消息由于某种原因出现畸形,它将永远不会离开系统,并导致演员定期重新启动...