Spring Cloud Stream and @Publisher annotation compatiblity

后端 未结 2 1243
野的像风
野的像风 2021-01-20 18:35

Since Spring Cloud Stream has not an annotation for sending a new message to a stream (@SendTo only works when @StreamListener is declared), I tried to use Spring Integratio

2条回答
  •  余生分开走
    2021-01-20 18:58

    Why not just send the message to a stream manually, like below.

    @Component
    @Configuration
    @EnableBinding(Processor.class)
    public class Sender {
    
        @Autowired
        private Processor processor;
    
        public void send(String message) {
    
            processor.output().send(MessageBuilder.withPayload(message).build());
    
        }
    
    }
    

    You can test it through the tester.

    @SpringBootTest
    public class SenderTest {
    
        @Autowired
        private MessageCollector messageCollector;
    
        @Autowired
        private Processor processor;
    
        @Autowired
        private Sender sender;
    
        @SuppressWarnings("unchecked")
        @Test
        public void testSend() throws Exception{
    
            sender.send("Hi!");
            Message message = (Message) this.messageCollector.forChannel(this.processor.output()).poll(1, TimeUnit.SECONDS);
            String messageData = message.getPayload().toString();
            System.out.println(messageData);
    
        }
    
    }
    

    You should see "Hi!" in the console.

提交回复
热议问题