cloud stream 官方文件閱讀筆記2
阿新 • • 發佈:2019-01-03
1、引入 springcloud Stream
springcloud Stream 是一個可以用於構建訊息驅動服務的框架
為了能夠使你的應用連到一個message broker,你可以新增一個 @EnableBinding 註解到你的應用中,然後,你可以新增
@StreamListener 來監聽接收事件在你的Stream程序裡面。看看下面這個例子
@SpringBootApplication
@EnableBinding(Sink.class)
public class VoteRecordingSinkApplication {
public static void main(String[] args) {
SpringApplication.run(VoteRecordingSinkApplication.class, args);
}
@StreamListener(Sink.INPUT)
public void processVote(Vote vote) {
votingService.recordVote(vote);
}
}
@EnableBinding 註解可以有多個介面引數(在這個例子中,只有一個Sink介面作為引數)。一個介面定義了輸入和輸出的通道,
springcloud Stream提供 Source/Sink/Processor 介面。同時,你可以自定義你自己的介面。
來看看Sink介面的實現:
public interface Sink{
String INPUT = "input";
@Input(Sink.INPUT)
SubscribableChannel input();
}
@Input 註解定義一個 input 的通道,也就是訊息從訊息中介軟體傳輸到應用的通道。@Output註解定義了一個output的通道,
也就是訊息從應用離開的通道。這兩個註釋都可以傳入一個通道名的引數。如果沒有傳入,被註解的方法名將被使用。
springcloud Stream 生成了一個具有代表性的介面給我們。我們可以通過自動注入來使用它。比如下面這個例子:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = VoteRecordingSinkApplication.class)
@WebAppConfiguration
@DirtiesContext
public class StreamApplicationTests {
@Autowired
private Sink Sink;
@Test
public void contextLoads(){
assertNotNull(this.sink.input());
}
}