【问题标题】:ActiveMQ, discard unconsumed messagesActiveMQ,丢弃未使用的消息
【发布时间】:2018-09-20 00:41:05
【问题描述】:

如何配置我的BrokerService 以丢弃未使用的消息?

我不希望我的客户端在订阅服务器队列时收到服务器发送的所有旧消息。

这是我目前的经纪人:

BrokerService ret = new BrokerService();
ret.setPersistent(false);
ret.setUseJmx(false);
ret.addConnector("tcp://0.0.0.0:4444");

目前,我的服务器首先启动并发送大约 10 条消息。之后,我的客户端订阅了队列,它接收到没有客户端订阅时发送的所有 10 条消息。我不想要这种行为。


已解决

@Bean
public JmsTemplate jsmTemplate(ConnectionFactory connectionFactory) {
    JmsTemplate ret = new JmsTemplate();
    ret.setConnectionFactory(connectionFactory);
    ret.setMessageConverter(jacksonJmsMessageConverter());

    // Enable the TimeToLive
    ret.setExplicitQosEnabled(true);
    // live time in millis of every sent message, unconsumed messages will be removed from the queue
    ret.setTimeToLive(10000L);
    return ret;
}

然后我发送这样的消息:

// after 10 seconds this message will be discarded from the queue
jmsTemplate.convertAndSend("messages", "hello from server");

解决方案 #2

我创建了一个 TOPIC 而不是一个 QUEUE。

http://javasampleapproach.com/java-integration/activemq-work-spring-jms-activemq-topic-publisher-subcribers-pattern-using-springboot

【问题讨论】:

    标签: jms activemq spring-jms


    【解决方案1】:

    使用主题(发布/订阅)而不是队列。

    默认情况下,主题的订阅者只会收到订阅活动期间发送的消息。

    【讨论】:

    猜你喜欢
    • 2021-11-22
    • 2022-12-15
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多