【问题标题】:Remove "ActiveMQ.Advisory.Producer.x" prefix删除“ActiveMQ.Advisory.Producer.x”前缀
【发布时间】:2021-07-08 22:44:41
【问题描述】:

问题:

  • 生产者以某种方式将事件发送到“ActiveMQ.Advisory.Producer.Queue.Queue”而不是“Queue”

主题部分中的 Active-MQ 管理控制台 带有生产者队列的屏幕截图:(不确定为什么它有队列和 0 个消费者以及排队的消息数 = 38)

队列部分中的 Active-MQ 管理控制台 带有消费者队列的屏幕截图:(它显示消费者 = 1 但排队的消息数 = 0)

附加生产者、消费者和配置代码。

制片人

public void sendMessage(WorkflowRun message){
        var queue = "Queue";
        try{
            log.info("Attempting Send message to queue: "+ queue);
            jmsTemplate.convertAndSend(queue, message);
        } catch(Exception e){
            log.error("Recieved Exception during send Message: ", e);
        }
    }

听众

@JmsListener(destination = "Queue")
    public void messageListener(SystemMessage systemMessage) {
        LOGGER.info("Message received! {}", systemMessage);
    }

配置

@Value("${spring.active-mq.broker-url}")
    private String brokerUrl;

    @Bean
        public ConnectionFactory connectionFactory() throws JMSException {
            ActiveMQConnectionFactory activeMQConnectionFactory  = new ActiveMQConnectionFactory();
            activeMQConnectionFactory.setBrokerURL(brokerUrl);
        activeMQConnectionFactory.setWatchTopicAdvisories(false);
        activeMQConnectionFactory.createQueueConnection(ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD);
        return  activeMQConnectionFactory;
    }

【问题讨论】:

  • 我已禁用 'activeMQConnectionFactory.setWatchTopicAdvisories(false);'如上面的文档链接中所述。但它不起作用,您有其他解决方案吗?

标签: java spring-boot activemq


【解决方案1】:

当您的生产者启动时,ActiveMQ 代理会生成“咨询消息”并将其发送到该主题。该计数表示已为队列创建了多少生产者://Queuee——在本例中已创建 38 个生产者。

由于未生成消息,因此在您的 Spring 接线中,您创建了连接、会话和生产者对象,但未发送消息。

此外,如果您显示 queue://ActiveMQ.Advisory.. 显示,您可能在应用程序的其他部分(或监控工具?)中存在错误,应配置为从 topic://ActiveMQ 消费.Advisory.. 而不是 queue://

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    相关资源
    最近更新 更多