不能使用SpringBootWeb从activemq消费

k4emjkb1  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(305)

从本地运行的activemq获取消息时遇到问题。我可以生产到队列中,我的电脑也注册为生产者。但是,计算机上的另一个spring应用程序应该配置为侦听器。到目前为止它还不起作用。activemq正在监听默认端口。
发件人的我的jms配置:

package at.dkepr.queueservice;

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.jms.Queue;

@Configuration
public class JmsConfig {
    @Bean
    public Queue queue(){
        return new ActiveMQQueue("indexing-queue");
    }
}

这就是消费者:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import at.dkepr.entity.UserSearchEntity;

@Component
@EnableJms
public class JmsConsumer {
    private final Logger logger = LoggerFactory.getLogger(JmsConsumer.class);

    @JmsListener(destination = "indexing-queue", containerFactory = "jmsListenerContainerFactory")
    public void receive(UserSearchEntity user){
        logger.info(user.getEmail());
    }
}

application.propertiers 我添加了必要的属性:

spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin

还有 UserSearchEntity 工具 Serializable .
据我所知,对于这个设置,我甚至不需要消费者的配置。我加了一个。

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;

@Configuration
@EnableJms
public class ConsumerConfig {
    @Value("${spring.activemq.broker-url}")
    private String brokerUrl;

    @Bean
    public ActiveMQConnectionFactory activeMQConnectionFactory() {
      ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
      activeMQConnectionFactory.setBrokerURL(brokerUrl);
      return activeMQConnectionFactory;
    }

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
      DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
      factory.setConnectionFactory(activeMQConnectionFactory());
      factory.setConcurrency("1-3");
      return factory;
    }
}

我没有收到任何错误日志。不幸的是,它只是无所作为。
这是activemq web控制台的屏幕截图,其中包含排队消息:

当我截取这个屏幕截图时,我的消费应用程序正在运行,但是代理显然没有识别它,因为“消费者数量”是 0 .
编辑:我刚刚尝试将侦听器添加到生产者所在的同一个spring应用程序中。令人惊讶的是,听众的沟通很好。问题似乎在于不同的spring应用程序。不过,我还是用了同样的方法 application.properties 对于这两个spring应用程序。配置文件也一样。

wtlkbnrh

wtlkbnrh1#

对于每个有同样问题的人:
对我来说,这是一个文件夹结构的简单问题。由于某种原因 Application.java 因为消费者服务在子文件夹中。在我搬家之后 Application.java 一个文件夹打开,到activemq的连接就工作了。

相关问题