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
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.