使用setMessageListener注册侦听器服务

时间:2017-12-20 10:28:57

标签: java spring spring-amqp

我有一个我想要使用的spring amqp应用程序,但我似乎不知道如何让它来注册我的监听器服务。这是我基于注释的配置文件。

package com.jerry.services;

import org.slf4j.Logger;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;


public class MessageListenerService implements MessageListener {

    private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(MessageListenerService.class);

    @Override
    public void onMessage(Message message) {
        LOGGER.info(message.getMessageProperties().toString());;
        LOGGER.info(new String(message.getBody()));
    }
}

这是我想要使用的听众服务

@Bean
    public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory() {
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory());
        factory.setConcurrentConsumers(3);
        //If you want a fixed number of consumers, omit the max.
        factory.setMaxConcurrentConsumers(10);
        //Set message listener : container.setMessageListener(this.myFirstListener);
        return factory;
    }

如何在此bean中注册侦听器服务?如何注册侦听不同队列的多个侦听器?

.overlay {
  position: fixed;
  z-index: 1;

  left: 0;
  top: 0;
  width: 100%;
  height: 100%;

  background-color: rgba(0, 0, 0, 0.4);      
}

.is-highlighted {
  position:relative;
  z-index:2;
}

2 个答案:

答案 0 :(得分:2)

  

如何在此bean中注册侦听器服务

@Bean定义MessageListenerService并创建SimpleMessageListenerContainer @Bean并使用setMessageListener()

容器工厂不适用于用户定义的侦听器,而是适用于@RabbitListener pojo注释。

  

我将如何注册监听不同队列的多个听众?

如果您希望同一个侦听器侦听多个队列,请在容器中设置队列名称。

如果您希望每个队列都有不同的侦听器,则每个队列都需要SimpleMessageListenerContainer

或者,改为使用@RabbitListener注释。

答案 1 :(得分:0)

对于你的听众课,你应该这样做:

@EnableRabbit
@Service
public class MessageListenerService {

   private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(MessageListenerService.class);

  @RabbitListener(queues = { Constant.QUEUE_NAME })
  public void onMessage(Message message) {
    LOGGER.info(message.getMessageProperties().toString());;
    LOGGER.info(new String(message.getBody()));
  }
}