测试 Spring- 与订阅者频道的集成
Testing Spring-Integration with subscriber channel
我有以下内容:
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()
}
你没有显示你的配置,但是,如果你的发布子频道有一个任务执行器,你需要添加一个锁存器;您还应该在主线程上执行断言...
@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 ...
}
我有以下内容:
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()
}
你没有显示你的配置,但是,如果你的发布子频道有一个任务执行器,你需要添加一个锁存器;您还应该在主线程上执行断言...
@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 ...
}