【发布时间】:2021-03-02 22:42:21
【问题描述】:
我有 Wildfly 21.0.0,配置了 jms-queue 和几个 in-vm 连接器/接受器。 然后我有一个消息驱动 Bean (MDB),它最多有 5 个并发会话,而不是处理收到的消息并做一些脏活。 在某些情况下,工作需要超过 5 分钟,并且队列将消息重新传递到 MDB,从而导致混乱。
我了解重新传递的概念,重新传递延迟,...,但我没有找到任何关于 Artemis ActiveMQ 在声明处于传递状态的消息之前等待多长时间的文档(等待结束时的自动确认) onMessage 方法长时间执行)必须重新交付。 从日志中我认为它等待 5 分钟,然后在重新传递延迟 2 秒后重新传递消息。
这个时间可以配置吗?
谢谢!
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
<server name="default">
<in-vm-connector name="in-vm" server-id="0"/>
<in-vm-acceptor name="in-vm" server-id="0">
<param name="buffer-pooling" value="false"/>
</in-vm-acceptor>
<jms-queue name="MyJobsQueue" entries="java:/jms/MyJobsQueue" />
<pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm" transaction="none" pre-acknowledge="true"/>
</server>
</subsystem>
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "MyJobsQueue"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "5")
})
public class MyJobsListener implements MessageListener {
//new logger.....
@Override
public void onMessage(Message m) {
try {
logger.info("Received message ({}) (Redelivered:{})", m.getJMSMessageID(), m.getJMSRedelivered());
Thread.sleep(10 * 60 * 1000);
} catch (InterruptedException e) {
}
}
}
2020-11-19 04:00:00 INFO - Received message (ID:5002ad76-2a13-11eb-bedf-005056b94ad2) (Redelivered:false)
2020-11-19 04:05:00 INFO - Received message (ID:5002ad76-2a13-11eb-bedf-005056b94ad2) (Redelivered:true)
2020-11-19 04:10:00 INFO - Received message (ID:5002ad76-2a13-11eb-bedf-005056b94ad2) (Redelivered:true)
2020-11-19 04:15:00 INFO - Received message (ID:5002ad76-2a13-11eb-bedf-005056b94ad2) (Redelivered:true)
2020-11-19 04:45:24 INFO - Received message (ID:5002ad76-2a13-11eb-bedf-005056b94ad2) (Redelivered:true)
【问题讨论】:
标签: java jms wildfly activemq-artemis