如何解决消息在 ActiveMQ Artemis 中过期
我使用 Eclipse 微配置文件发射器在 Quarkus 应用程序中创建了一个 ActiveMQ Artemis 生成器。但是消息会立即过期,并被移入 ExpiryQueue
。我不确定这种行为。请建议我如何将消息持久化到队列中,使其仅在指定时间后过期。
我正在使用以下代码。
@Inject
@Channel("my-queue")
Emitter<String> emitter;
在元数据下方创建:
String message = "my-message";
OutgoingAmqpMetadata metadata = OutgoingAmqpMetadata.builder()
.withExpiryTime(10000L)
.withDurable(true)
.withMessageId(String.valueOf(message.hashCode()))
.build();
emitter.send(Message.of(message,Metadata.of(metadata)));
我正在使用 smallrye-amqp
连接器。在 application.properties
中添加了以下属性:
mp.messaging.outgoing.my-queue.connector=smallrye-amqp
解决方法
我相信您在 withExpiryTime
中设置了错误的值。您将其设置为 TTL,但我相信这是一个绝对时间,因此您应该这样做:
OutgoingAmqpMetadata metadata = OutgoingAmqpMetadata.builder()
.withExpiryTime(System.currentTimeMillis() + 10000L)
.withDurable(true)
.withMessageId(String.valueOf(message.hashCode()))
.build();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。