0

Derzeit versuche ich eine Nachricht in die Warteschlange mit JSON-Format zu stellen. Darunter ist mein Code-Snippet, aber es funktioniert nicht.Wie man eine Nachricht in die Warteschlange als JSON-Format mit Spring Integration setzen AMQP

return IntegrationFlows.from(Amqp.inboundAdapter(connectionFactory, NOTE_INCOMING_QUEUE) 
       .concurrentConsumers(2)) 
       .transform(new JsonToObjectTransformer(Note.class)) 
       .handle(Note.class, (note, header) -> { 
        // doing something 
        return note; 
       }) 
       .channel(Amqp.channel(connectionFactory).queueName(NOTE_OCRED_QUEUE).messageConverter(
         new MappingJackson2MessageConverter())) 
       .get(); 

Die Nachricht wurde in der Warteschlange als Anwendung/x-Java-Objekt-serialisiert putted.

Antwort

1

Zwei Probleme:

  1. AMQP-backed Kanäle für die Persistenz bestimmt sind, nicht für einfach Nachrichten an RabbitMQ zu senden; Standardmäßig wird die gesamte Nachricht serialisiert (mit dem Konverter von RabbitTemplate, nicht mit dem Kanal).
  2. Nachrichtenkonverter auf Kanälen werden nur auf Kanälen zum Konvertieren von DataTypes und nicht zur Serialisierung verwendet.

Verwenden einen ausgehenden Kanaladapter ...

.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey(NOTE_OCRED_QUEUE)); 

Wo der RabbitTemplate mit einem Jackson2JsonMessageConverter konfiguriert ist.

+0

Danke. Die Erklärung ist klar. – Kane

Verwandte Themen