EmailQueueListener конфигурацииSpring интеграция Java конфигурации
@Component
public class EmailQueueListener{
public String handleMessage(String string) {
System.out.println("Message printing"); // this was printed several times
System.out.println(rabbitTemplate.receiveAndConvert()); //received null here
return string;
}
}
@Configuration
public class RabbitMQConfiguration {
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("localhost");
return connectionFactory;
}
@Bean
public AmqpAdmin amqpAdmin() {
RabbitAdmin admin=new RabbitAdmin(connectionFactory());
admin.declareQueue(queue());
return admin;
}
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate rabbitTemplate=new RabbitTemplate(connectionFactory());
rabbitTemplate.setRoutingKey("eventsQueue");
rabbitTemplate.setQueue("eventsQueue");
return rabbitTemplate;
}
@Bean
public Queue queue() {
return new Queue("eventsQueue");
}
@Bean
@Autowired
public SimpleMessageListenerContainer messageListenerContainer(EmailQueueListener listener){
SimpleMessageListenerContainer container=new SimpleMessageListenerContainer(connectionFactory());
MessageListenerAdapter adapter=new MessageListenerAdapter(listener, "handleMessage");
container.setMessageListener(adapter);
container.addQueues(queue());
return container;
}
}
Sender
rabbitTemplate.convertAndSend("hello");
Я обновил код ба пойте на то, что вы сказали. Но это не работает. Я не мог видеть сообщение, которое я напечатал на консоли в методе Listener. Является ли их что-то неправильно в моей конфигурации
Почему вы вызываете 'rabbitTemplate.receiveAndConvert()' внутри своего слушателя - у него уже есть сообщение. Вы также не показываете, как шаблон подключен к компоненту слушателя. –