Ich bin neu in Frühling und RabbitMQ und habe herausgefunden, wie Nachrichten so etwas wie dies mit konsumieren:Benötigen mit Kaninchen Anmerkungen helfen Daten im Frühjahr Stiefel mit AMQP verbrauchen
KONFIGURATIONSDATEI:
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ConsumerConfiguration {
private String queueName;
@Autowired
private ConnectionFactory connectionFactory;
public void setQueueName(final String queueName) {
this.queueName = queueName;
}
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(this.connectionFactory);
}
@Bean
public MessageConverter messageConverter() {
final Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter();
return converter;
}
@Bean
public SimpleMessageListenerContainer listenerContainer() {
final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(this.connectionFactory);
container.setQueueNames(this.queueName);
container.setMessageListener(messageListenerAdapter());
return container;
}
@Bean
public MessageListenerAdapter messageListenerAdapter() {
return new MessageListenerAdapter(this, messageConverter());
}
}
CONSUMER DATEI:
import org.springframework.stereotype.Component;
import com.vts.cped.basic.TopicNames;
import com.vts.cped.correlator.data.CorrelatedData;
import com.vts.cped.main.config.BaseReceiver;
@Component
public class Consumer {
public void handleMessage(final SomeData data) {
System.out.println("Consumer received SomeData with data " + data.getData());
}
}
ich versuche, das gleiche mit RabbitMQ Anmerkungen in der Hoffnung, zu erreichen, dass sie den Code sauberer machen. Ich habe versucht, dies mit dem folgenden zu tun, aber ich kann es nicht an der Arbeit:
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Service
public class Receiver {
@RabbitListener(queues = "tut.hello")
public void process(final SomeData in) {
System.out.println(" [x] Received '" + in + "'");
}
}
ich ursprünglich so etwas wie dies versucht hatte, aber es hat auch nicht:
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@RabbitListener(queues = "tut.hello")
@Service
public class Receiver {
@RabbitHandler
public void process(final SomeData in) {
System.out.println(" [x] Received '" + in + "'");
}
}
Wenn Du hast die geheime Soße, bitte sende mir etwas! Vielen Dank für Ihre Hilfe.
ich, dass in der Konfiguration übernehmen würde 'queueName' wäre immer Null beim Erstellen von Beans. – Piotr