我有一个我想要使用的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;
}
答案 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()));
}
}