我有以下内容:
Direct-Channel => Splitter => PublishSubscribeChannel
我想将数据发送到直接频道并在发布 - 订阅频道中测试结果
我到目前为止部分取自Spring.io(仅当我逐步调试模式时才有效)是:
DirectChannel incomeChannel
PublishSubscribeChannel subscribeChannel
@Test
public void test() {
final AtomicInteger count = new AtomicInteger()
assert true == subscribeChannel.subscribe(new MessageHandler() {
void handleMessage(Message<?> message) throws MessagingException {
count.getAndIncrement();
Entity response = message.getPayload()
assert response != null
// assertions ...
}
})
def request = MessageBuilder.withPayload(entities).build()
assert incomeChannel.send(request) == true
Thread.sleep(10000)
assert 0 < count.get()
}
答案 0 :(得分:2)
您不显示您的配置,但如果您的pub子通道有任务执行程序,则需要添加一个锁存器;你还应该在主线程上做断言......
@Test
public void test() {
final AtomicReference<Message<?>> messageRef = new AtomicReference<>();
final CountDownLatch latch = new CountDownLatch(1);
assert true == subscriberChannel.subscribe(new MessageHandler() {
void handleMessage(Message<?> message) throws MessagingException {
messageRef.set(message);
latch.countDown();
}
})
def request = MessageBuilder.withPayload(entities).build()
assert incomeChannel.send(request) == true
assert true == latch.await(10, TimeUnit.SECONDS)
Entity response = msg.get().getPayload()
assert response != null
// assertions ...
}