【问题标题】:How to receive a message from ActiveMQ broker by it's message id?如何通过消息 ID 从 ActiveMQ 代理接收消息?
【发布时间】:2022-04-06 19:03:46
【问题描述】:

我们使用 ActiveMQ 代理内部队列中的消息列表并将其呈现给用户,以便用户选择一条消息,我们使用基于 AMQP.Net Lite (.net 2.1) 的 .net 客户端实现。

AMQ queue messages

如果用户想从队列中选择一条特定的消息,而不是从队列中下一个消费的消息,是否有可能通过“MessageId”参数或其他属性访问该消息?

类似于下面的代码:

Message msgToSend = new Message();
msgToSend.Properties = new Properties() { MessageId = "8589942532"};
receiver.Accept(msgToSend);

用户可以从队列中看到的消息列表不被接受,因此它们在队列中仍然可见。这个想法是在用户执行特定操作(例如单击“保存”按钮)时接受消息。

【问题讨论】:

  • 不太清楚您在问什么,请更新问题并提供更多详细信息
  • 你好@Tim Bish,我已经更新了我的问题,现在更清楚了吗?
  • 听起来你需要一个数据库而不是消息代理。

标签: activemq amqp activemq-artemis amqp.netlite


【解决方案1】:

您可以使用filter expression 创建额外的消费者,它自然会按消息 ID 过滤,以接收该消息。收到消息后,这个消费者就得走了,因为它没有用。

顺便说一句,您也可以使用non-destructive queues or consumers 浏览队列而不从中删除消息(至少在 Artemis 中可用,不确定 ActiveMQ Classic)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2018-03-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多