ActiveMQ:监视特定消息的状态(在 .NET 中)



小问题,假设我将消息排队进入"ActiveMQ"队列,有没有办法知道该消息是否已被使用或仍在队列中(来自.net环境)?

我可以查询"ActiveMQ"队列以了解消息的当前状态吗?

我会尝试提供更多的背景知识,我对微服务很陌生,并且仍在努力实现这种架构带来的所有挑战,所以如果我的问题微不足道,请原谅我。

我正在努力构建一个系统,该系统将在分布式机器/节点的农场上运行"作业"(无论它们是什么)。

最终用户将能够向某个节点或一组节点提交"作业",一个节点需要经过一些准备过程才能执行。

我可以使用 activemq 队列来处理这个管道,但随后我问自己是否还需要维护数据库。

假设用户对作业进行排队,我希望能够分配一个作业 ID,让用户知道他的作业是否已处理或仍在队列中等待。

最佳做法是什么?我应该维护两个 activemq 队列以在队列之间传输消息和数据库以维护作业的整体状态,还是可以只使用 activemq?

如果只有 activemq,那么我如何能够告诉用户他的作业状态?如果它在队列中等待(或队列)或是否正在处理?

谢谢!

新消息传递用户容易犯的最大错误是尝试将代理用作数据库。 代理非常擅长可靠地将消息从 A 点传输到 B 点,这就是您应该如何使用它。 如果您需要跟踪状态并保留有关作业及其进度的统计信息,则最好使用数据库或其他存储来跟踪该信息。

如果您需要让另一个系统知道何时处理消息,则其标准机制是请求/回复,其中消息的处理器将回复放置到您创建的响应队列上,并让发送方侦听该队列上的响应。

最新更新