ActiveMQ AMQ_调度_延迟消息如何工作?

ActiveMQ AMQ_调度_延迟消息如何工作?,activemq,Activemq,我们想用它来延迟特定的事件AMQ_SCHEDULED_DELAY在内部是如何工作的?文档中提供了有关调度器的信息,但没有提供它利用什么机制来延迟消息的信息。因此,我们不确定延迟将如何影响activeMQ。activeMQ是否利用池或异步来实现延迟 我问这个问题是因为我所在组织的人员希望选择不同的技术。我没有任何证据证明activeMQ的延迟更好 是指向源代码的链接。我想查找代码,但我不擅长java。有人能帮忙吗?可以使用activemq web控制台进行性能测试。有一个选项可以发送具有可配置延迟

我们想用它来延迟特定的事件AMQ_SCHEDULED_DELAY在内部是如何工作的?文档中提供了有关调度器的信息,但没有提供它利用什么机制来延迟消息的信息。因此,我们不确定延迟将如何影响activeMQ。activeMQ是否利用池或异步来实现延迟

我问这个问题是因为我所在组织的人员希望选择不同的技术。我没有任何证据证明activeMQ的延迟更好


是指向源代码的链接。我想查找代码,但我不擅长java。有人能帮忙吗?

可以使用activemq web控制台进行性能测试。有一个选项可以发送具有可配置延迟和要发送的消息数的消息。这并没有回答我的问题,但比较两种方法似乎是最好的选择。

可以使用activemq web控制台进行性能测试。有一个选项可以发送具有可配置延迟和要发送的消息数的消息。它并没有回答我的问题,但它似乎是比较两种方法的最佳选择。

ActiveMQ的默认实现确实利用了轮询

活动MQ通过后台调度程序线程在内部保持对已调度(或延迟)消息的轮询。此线程读取已调度事件(或消息)的列表并触发作业,在触发作业事件之前根据需要重新调度重复作业

计划事件列表按排序顺序存储在activemq的内部存储器中。所以在轮询过程中,它只读取计划进行最早处理的事件。由于消息是在排队期间持久化的,因此在处理期间,调度许多消息不会对性能产生明显影响

然而,在采用之前,您可以设置基准测试,而不必担心太多内部实现细节,以确保性能/SLA要求得到满足

有关更多详细信息,请参阅作业计划程序API的。对于默认实现,您可以参考


希望这有帮助。

ActiveMQ的默认实现确实利用了轮询

活动MQ通过后台调度程序线程在内部保持对已调度(或延迟)消息的轮询。此线程读取已调度事件(或消息)的列表并触发作业,在触发作业事件之前根据需要重新调度重复作业

计划事件列表按排序顺序存储在activemq的内部存储器中。所以在轮询过程中,它只读取计划进行最早处理的事件。由于消息是在排队期间持久化的,因此在处理期间,调度许多消息不会对性能产生明显影响

然而,在采用之前,您可以设置基准测试,而不必担心太多内部实现细节,以确保性能/SLA要求得到满足

有关更多详细信息,请参阅作业计划程序API的。对于默认实现,您可以参考


希望这能有所帮助。

看看@skadya提到的源代码,“轮询”一词不是我所理解的。它似乎使用Java对象类的wait(长超时)方法来确定何时“唤醒”运行作业的线程

所以,我不会称之为投票。我将其称为异步机制,在该机制中,延迟/超时被设置为使线程通过超时被唤醒(例如,在适当的时间运行下一个计划作业),超时设置为适合下一个计划作业开始的值

Javadoc for


注意,Object.wait的实现是JDK/JRE/JVM为给定平台提供的本机(即非java)实现。看看@skadya提到的源代码,术语“polling”不是我所理解的。它似乎使用Java对象类的wait(长超时)方法来确定何时“唤醒”运行作业的线程

所以,我不会称之为投票。我将其称为异步机制,在该机制中,延迟/超时被设置为使线程通过超时被唤醒(例如,在适当的时间运行下一个计划作业),超时设置为适合下一个计划作业开始的值

Javadoc for


注意,Object.wait的实现是JDK/JRE/JVM为给定平台提供的本机(即非java)实现。感谢您找到了负责该功能的代码。这看起来更像是Steve指出的async感谢您找到了负责该特性的代码。它看起来更像史蒂夫指出的异步