Added channel reference to Subscription and refactored/simplified TargetAdapter (implements MessageHandler).
This commit is contained in:
@@ -27,6 +27,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.bus.MessageBus;
|
||||
import org.springframework.integration.bus.Subscription;
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.message.Message;
|
||||
@@ -46,15 +47,16 @@ public class DefaultTargetAdapterTests {
|
||||
target.afterPropertiesSet();
|
||||
DefaultTargetAdapter adapter = new DefaultTargetAdapter(target);
|
||||
SimpleChannel channel = new SimpleChannel();
|
||||
adapter.setChannel(channel);
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setChannel(channel);
|
||||
Message<String> message = new GenericMessage<String>("123", "testing");
|
||||
channel.send(message);
|
||||
assertNull(queue.poll());
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("channel", channel);
|
||||
bus.registerTargetAdapter("targetAdapter", adapter);
|
||||
bus.registerHandler("targetAdapter", adapter, subscription);
|
||||
bus.start();
|
||||
String result = queue.poll(100, TimeUnit.MILLISECONDS);
|
||||
String result = queue.poll(500, TimeUnit.MILLISECONDS);
|
||||
assertNotNull(result);
|
||||
assertEquals("testing", result);
|
||||
bus.stop();
|
||||
|
||||
@@ -29,13 +29,25 @@
|
||||
<property name="method" value="store"/>
|
||||
</bean>
|
||||
</constructor-arg>
|
||||
<property name="channel" ref="outputChannel"/>
|
||||
</bean>
|
||||
|
||||
<bean id="targetEndpoint" class="org.springframework.integration.endpoint.DefaultMessageEndpoint">
|
||||
<property name="handler" ref="targetAdapter"/>
|
||||
<property name="subscription">
|
||||
<bean class="org.springframework.integration.bus.Subscription">
|
||||
<constructor-arg ref="outputChannel"/>
|
||||
</bean>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="sink" class="org.springframework.integration.adapter.TestSink"/>
|
||||
|
||||
<bean id="endpoint" class="org.springframework.integration.endpoint.DefaultMessageEndpoint">
|
||||
<property name="inputChannelName" value="inputChannel"/>
|
||||
<bean class="org.springframework.integration.endpoint.DefaultMessageEndpoint">
|
||||
<property name="subscription">
|
||||
<bean class="org.springframework.integration.bus.Subscription">
|
||||
<constructor-arg ref="inputChannel"/>
|
||||
</bean>
|
||||
</property>
|
||||
<property name="defaultOutputChannelName" value="outputChannel"/>
|
||||
</bean>
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.junit.Test;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.integration.bus.MessageBus;
|
||||
import org.springframework.integration.bus.Subscription;
|
||||
import org.springframework.integration.channel.MessageChannel;
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.message.StringMessage;
|
||||
@@ -46,10 +47,9 @@ public class ApplicationEventTargetAdapterTests {
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
ApplicationEventTargetAdapter adapter = new ApplicationEventTargetAdapter();
|
||||
adapter.setApplicationEventPublisher(publisher);
|
||||
adapter.setChannel(channel);
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("channel", channel);
|
||||
bus.registerTargetAdapter("adapter", adapter);
|
||||
bus.registerHandler("adapter", adapter, new Subscription(channel));
|
||||
bus.start();
|
||||
assertEquals(1, latch.getCount());
|
||||
channel.send(new StringMessage("123", "testing"));
|
||||
|
||||
@@ -39,7 +39,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
DispatcherTask dispatcherTask = new DispatcherTask(channel);
|
||||
dispatcherTask.addHandler(adapter);
|
||||
channel.send(new StringMessage("foo"));
|
||||
@@ -54,7 +53,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
DispatcherTask dispatcherTask = new DispatcherTask(channel);
|
||||
dispatcherTask.addHandler(adapter);
|
||||
channel.send(new StringMessage("foo"));
|
||||
@@ -72,7 +70,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
adapter.setShouldAppendNewLine(true);
|
||||
DispatcherTask dispatcherTask = new DispatcherTask(channel);
|
||||
dispatcherTask.addHandler(adapter);
|
||||
@@ -92,7 +89,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
ChannelPollingMessageRetriever retriever = new ChannelPollingMessageRetriever(channel);
|
||||
retriever.setMaxMessagesPerTask(2);
|
||||
DispatcherTask dispatcherTask = new DispatcherTask(retriever);
|
||||
@@ -109,7 +105,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
adapter.setShouldAppendNewLine(true);
|
||||
ChannelPollingMessageRetriever retriever = new ChannelPollingMessageRetriever(channel);
|
||||
retriever.setReceiveTimeout(0);
|
||||
@@ -129,7 +124,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
DispatcherTask dispatcherTask = new DispatcherTask(channel);
|
||||
dispatcherTask.addHandler(adapter);
|
||||
TestObject testObject = new TestObject("foo");
|
||||
@@ -145,7 +139,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
ChannelPollingMessageRetriever retriever = new ChannelPollingMessageRetriever(channel);
|
||||
retriever.setReceiveTimeout(0);
|
||||
retriever.setMaxMessagesPerTask(2);
|
||||
@@ -165,7 +158,6 @@ public class CharacterStreamTargetAdapterTests {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
CharacterStreamTargetAdapter adapter = new CharacterStreamTargetAdapter(stream);
|
||||
adapter.setChannel(channel);
|
||||
adapter.setShouldAppendNewLine(true);
|
||||
ChannelPollingMessageRetriever retriever = new ChannelPollingMessageRetriever(channel);
|
||||
retriever.setReceiveTimeout(0);
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.integration.MessageDeliveryException;
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.dispatcher.DefaultMessageDispatcher;
|
||||
import org.springframework.integration.dispatcher.MessageHandlerRejectedExecutionException;
|
||||
import org.springframework.integration.endpoint.DefaultMessageEndpoint;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
import org.springframework.integration.handler.PooledMessageHandler;
|
||||
import org.springframework.integration.message.ErrorMessage;
|
||||
import org.springframework.integration.message.Message;
|
||||
@@ -467,19 +467,18 @@ public class DefaultMessageDispatcherTests {
|
||||
assertEquals("endpoint2 should have accepted the message", 1, counter2.get());
|
||||
}
|
||||
|
||||
private static class TestEndpoint extends DefaultMessageEndpoint {
|
||||
|
||||
private static class TestEndpoint implements MessageHandler {
|
||||
|
||||
private AtomicInteger counter;
|
||||
|
||||
private CountDownLatch latch;
|
||||
|
||||
|
||||
public TestEndpoint(AtomicInteger counter, CountDownLatch latch) {
|
||||
this.counter = counter;
|
||||
this.latch = latch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Message<?> handle(Message<?> message) {
|
||||
counter.incrementAndGet();
|
||||
latch.countDown();
|
||||
|
||||
@@ -27,8 +27,7 @@ import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.endpoint.ConcurrencyPolicy;
|
||||
import org.springframework.integration.endpoint.DefaultMessageEndpoint;
|
||||
import org.springframework.integration.endpoint.MessageEndpoint;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
import org.springframework.integration.message.Message;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.scheduling.PollingSchedule;
|
||||
@@ -44,8 +43,7 @@ public class FixedDelayConsumerTests {
|
||||
final AtomicInteger counter = new AtomicInteger(0);
|
||||
final CountDownLatch latch = new CountDownLatch(messagesToSend);
|
||||
SimpleChannel channel = new SimpleChannel();
|
||||
MessageEndpoint endpoint = new DefaultMessageEndpoint() {
|
||||
@Override
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
counter.incrementAndGet();
|
||||
latch.countDown();
|
||||
@@ -55,7 +53,6 @@ public class FixedDelayConsumerTests {
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.initialize();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
PollingSchedule schedule = new PollingSchedule(10);
|
||||
schedule.setFixedRate(false);
|
||||
ConcurrencyPolicy concurrencyPolicy = new ConcurrencyPolicy();
|
||||
@@ -63,10 +60,8 @@ public class FixedDelayConsumerTests {
|
||||
concurrencyPolicy.setMaxConcurrency(1);
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setSchedule(schedule);
|
||||
subscription.setConcurrencyPolicy(concurrencyPolicy);
|
||||
subscription.setChannel("testChannel");
|
||||
subscription.setHandler("testEndpoint");
|
||||
bus.activateSubscription(subscription);
|
||||
subscription.setChannelName("testChannel");
|
||||
bus.registerHandler("testHandler", handler, subscription, concurrencyPolicy);
|
||||
bus.start();
|
||||
for (int i = 0; i < messagesToSend; i++) {
|
||||
channel.send(new GenericMessage<String>(1, "test " + (i+1)));
|
||||
@@ -81,8 +76,7 @@ public class FixedDelayConsumerTests {
|
||||
final AtomicInteger counter = new AtomicInteger(0);
|
||||
final CountDownLatch latch = new CountDownLatch(messagesToSend);
|
||||
SimpleChannel channel = new SimpleChannel();
|
||||
MessageEndpoint endpoint = new DefaultMessageEndpoint() {
|
||||
@Override
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
counter.incrementAndGet();
|
||||
latch.countDown();
|
||||
@@ -92,14 +86,12 @@ public class FixedDelayConsumerTests {
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.initialize();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
PollingSchedule schedule = new PollingSchedule(10);
|
||||
schedule.setFixedRate(false);
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setChannel("testChannel");
|
||||
subscription.setHandler("testEndpoint");
|
||||
Subscription subscription = new Subscription(channel);
|
||||
subscription.setChannelName("testChannel");
|
||||
subscription.setSchedule(schedule);
|
||||
bus.activateSubscription(subscription);
|
||||
bus.registerHandler("testHandler", handler, subscription);
|
||||
for (int i = 0; i < messagesToSend; i++) {
|
||||
channel.send(new GenericMessage<String>(1, "test " + (i+1)));
|
||||
}
|
||||
|
||||
@@ -27,8 +27,7 @@ import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.endpoint.ConcurrencyPolicy;
|
||||
import org.springframework.integration.endpoint.DefaultMessageEndpoint;
|
||||
import org.springframework.integration.endpoint.MessageEndpoint;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
import org.springframework.integration.message.Message;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.scheduling.PollingSchedule;
|
||||
@@ -44,8 +43,7 @@ public class FixedRateConsumerTests {
|
||||
final AtomicInteger counter = new AtomicInteger(0);
|
||||
final CountDownLatch latch = new CountDownLatch(messagesToSend);
|
||||
SimpleChannel channel = new SimpleChannel();
|
||||
MessageEndpoint endpoint = new DefaultMessageEndpoint() {
|
||||
@Override
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
counter.incrementAndGet();
|
||||
latch.countDown();
|
||||
@@ -55,14 +53,12 @@ public class FixedRateConsumerTests {
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.initialize();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
PollingSchedule schedule = new PollingSchedule(10);
|
||||
schedule.setFixedRate(true);
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setChannel("testChannel");
|
||||
subscription.setHandler("testEndpoint");
|
||||
subscription.setChannelName("testChannel");
|
||||
subscription.setSchedule(schedule);
|
||||
bus.activateSubscription(subscription);
|
||||
bus.registerHandler("testHandler", handler, subscription);
|
||||
bus.start();
|
||||
for (int i = 0; i < messagesToSend; i++) {
|
||||
channel.send(new GenericMessage<String>(1, "test " + (i+1)));
|
||||
@@ -77,8 +73,7 @@ public class FixedRateConsumerTests {
|
||||
final AtomicInteger counter = new AtomicInteger(0);
|
||||
final CountDownLatch latch = new CountDownLatch(messagesToSend);
|
||||
SimpleChannel channel = new SimpleChannel();
|
||||
MessageEndpoint endpoint = new DefaultMessageEndpoint() {
|
||||
@Override
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
counter.incrementAndGet();
|
||||
latch.countDown();
|
||||
@@ -86,20 +81,16 @@ public class FixedRateConsumerTests {
|
||||
}
|
||||
};
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.initialize();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
PollingSchedule schedule = new PollingSchedule(5);
|
||||
schedule.setFixedRate(true);
|
||||
ConcurrencyPolicy concurrencyPolicy = new ConcurrencyPolicy();
|
||||
concurrencyPolicy.setCoreConcurrency(1);
|
||||
concurrencyPolicy.setMaxConcurrency(1);
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setChannel("testChannel");
|
||||
subscription.setHandler("testEndpoint");
|
||||
subscription.setChannelName("testChannel");
|
||||
subscription.setSchedule(schedule);
|
||||
subscription.setConcurrencyPolicy(concurrencyPolicy);
|
||||
bus.activateSubscription(subscription);
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerHandler("testHandler", handler, subscription, concurrencyPolicy);
|
||||
bus.start();
|
||||
for (int i = 0; i < messagesToSend; i++) {
|
||||
channel.send(new GenericMessage<String>(1, "test " + (i+1)));
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.integration.adapter.PollingSourceAdapter;
|
||||
import org.springframework.integration.adapter.SourceAdapter;
|
||||
import org.springframework.integration.channel.MessageChannel;
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.endpoint.DefaultMessageEndpoint;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
import org.springframework.integration.message.ErrorMessage;
|
||||
import org.springframework.integration.message.GenericMessage;
|
||||
import org.springframework.integration.message.Message;
|
||||
@@ -45,25 +45,30 @@ import org.springframework.integration.message.StringMessage;
|
||||
public class MessageBusTests {
|
||||
|
||||
@Test
|
||||
public void testChannelsConnectedWithEndpoint() {
|
||||
public void testOutputChannel() {
|
||||
MessageBus bus = new MessageBus();
|
||||
MessageChannel sourceChannel = new SimpleChannel();
|
||||
MessageChannel targetChannel = new SimpleChannel();
|
||||
bus.registerChannel("sourceChannel", sourceChannel);
|
||||
sourceChannel.send(new StringMessage("123", "test"));
|
||||
StringMessage message = new StringMessage("test");
|
||||
message.getHeader().setReplyChannelName("targetChannel");
|
||||
sourceChannel.send(message);
|
||||
bus.registerChannel("targetChannel", targetChannel);
|
||||
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();
|
||||
endpoint.setInputChannelName("sourceChannel");
|
||||
endpoint.setDefaultOutputChannelName("targetChannel");
|
||||
bus.registerEndpoint("endpoint", endpoint);
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
return message;
|
||||
}
|
||||
};
|
||||
Subscription subscription = new Subscription(sourceChannel);
|
||||
bus.registerHandler("handler", handler, subscription);
|
||||
bus.start();
|
||||
Message<?> result = targetChannel.receive(100);
|
||||
Message<?> result = targetChannel.receive(3000);
|
||||
assertEquals("test", result.getPayload());
|
||||
bus.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testChannelsWithoutEndpoint() {
|
||||
public void testChannelsWithoutHandlers() {
|
||||
MessageBus bus = new MessageBus();
|
||||
MessageChannel sourceChannel = new SimpleChannel();
|
||||
sourceChannel.send(new StringMessage("123", "test"));
|
||||
@@ -84,31 +89,34 @@ public class MessageBusTests {
|
||||
sourceChannel.send(new GenericMessage<String>("123", "test"));
|
||||
MessageChannel targetChannel = (MessageChannel) context.getBean("targetChannel");
|
||||
MessageBus bus = (MessageBus) context.getBean("bus");
|
||||
Subscription subscription = new Subscription();
|
||||
subscription.setChannel("sourceChannel");
|
||||
subscription.setHandler("endpoint");
|
||||
bus.activateSubscription(subscription);
|
||||
Message<?> result = targetChannel.receive(100);
|
||||
bus.start();
|
||||
Message<?> result = targetChannel.receive(1000);
|
||||
assertEquals("test", result.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExactlyOneEndpointReceivesUnicastMessage() {
|
||||
public void testExactlyOneHandlerReceivesPointToPointMessage() {
|
||||
SimpleChannel inputChannel = new SimpleChannel();
|
||||
SimpleChannel outputChannel1 = new SimpleChannel();
|
||||
SimpleChannel outputChannel2 = new SimpleChannel();
|
||||
DefaultMessageEndpoint endpoint1 = new DefaultMessageEndpoint();
|
||||
endpoint1.setDefaultOutputChannelName("output1");
|
||||
endpoint1.setInputChannelName("input");
|
||||
DefaultMessageEndpoint endpoint2 = new DefaultMessageEndpoint();
|
||||
endpoint2.setDefaultOutputChannelName("output2");
|
||||
endpoint2.setInputChannelName("input");
|
||||
MessageHandler handler1 = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
message.getHeader().setReplyChannelName("output1");
|
||||
return message;
|
||||
}
|
||||
};
|
||||
MessageHandler handler2 = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
message.getHeader().setReplyChannelName("output2");
|
||||
return message;
|
||||
}
|
||||
};
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("input", inputChannel);
|
||||
bus.registerChannel("output1", outputChannel1);
|
||||
bus.registerChannel("output2", outputChannel2);
|
||||
bus.registerEndpoint("endpoint1", endpoint1);
|
||||
bus.registerEndpoint("endpoint2", endpoint2);
|
||||
bus.registerHandler("handler1", handler1, new Subscription(inputChannel));
|
||||
bus.registerHandler("handler2", handler2, new Subscription(inputChannel));
|
||||
bus.start();
|
||||
inputChannel.send(new StringMessage(1, "testing"));
|
||||
Message<?> message1 = outputChannel1.receive(100);
|
||||
@@ -117,6 +125,39 @@ public class MessageBusTests {
|
||||
assertTrue("exactly one message should be null", message1 == null ^ message2 == null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBothHandlersReceivePublishSubscribeMessage() {
|
||||
SimpleChannel inputChannel = new SimpleChannel();
|
||||
inputChannel.setBroadcaster(true);
|
||||
SimpleChannel outputChannel1 = new SimpleChannel();
|
||||
SimpleChannel outputChannel2 = new SimpleChannel();
|
||||
MessageHandler handler1 = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
message.getHeader().setReplyChannelName("output1");
|
||||
return message;
|
||||
}
|
||||
};
|
||||
MessageHandler handler2 = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
message.getHeader().setReplyChannelName("output2");
|
||||
return message;
|
||||
}
|
||||
};
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("input", inputChannel);
|
||||
bus.registerChannel("output1", outputChannel1);
|
||||
bus.registerChannel("output2", outputChannel2);
|
||||
bus.registerHandler("handler1", handler1, new Subscription(inputChannel));
|
||||
bus.registerHandler("handler2", handler2, new Subscription(inputChannel));
|
||||
bus.start();
|
||||
inputChannel.send(new StringMessage(1, "testing"));
|
||||
Message<?> message1 = outputChannel1.receive(100);
|
||||
Message<?> message2 = outputChannel2.receive(0);
|
||||
bus.stop();
|
||||
assertTrue("both handlers should have received and replied to the message",
|
||||
(message1 != null && message2 != null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidMessageChannelWithFailedDispatch() throws InterruptedException {
|
||||
MessageBus bus = new MessageBus();
|
||||
|
||||
@@ -11,7 +11,11 @@
|
||||
<bean id="targetChannel" class="org.springframework.integration.channel.SimpleChannel"/>
|
||||
|
||||
<bean id="endpoint" class="org.springframework.integration.endpoint.DefaultMessageEndpoint">
|
||||
<property name="inputChannelName" value="sourceChannel"/>
|
||||
<property name="subscription">
|
||||
<bean class="org.springframework.integration.bus.Subscription">
|
||||
<constructor-arg ref="sourceChannel"/>
|
||||
</bean>
|
||||
</property>
|
||||
<property name="defaultOutputChannelName" value="targetChannel"/>
|
||||
</bean>
|
||||
|
||||
|
||||
@@ -21,7 +21,8 @@ import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.bus.MessageBus;
|
||||
import org.springframework.integration.channel.ChannelRegistry;
|
||||
import org.springframework.integration.channel.DefaultChannelRegistry;
|
||||
import org.springframework.integration.channel.MessageChannel;
|
||||
import org.springframework.integration.channel.SimpleChannel;
|
||||
import org.springframework.integration.handler.MessageHandler;
|
||||
@@ -35,49 +36,40 @@ public class DefaultMessageEndpointTests {
|
||||
|
||||
@Test
|
||||
public void testDefaultReplyChannel() throws Exception {
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
MessageChannel replyChannel = new SimpleChannel();
|
||||
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
|
||||
channelRegistry.registerChannel("replyChannel", replyChannel);
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<String> handle(Message<?> message) {
|
||||
return new StringMessage("123", "hello " + message.getPayload());
|
||||
}
|
||||
};
|
||||
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();
|
||||
endpoint.setInputChannelName("testChannel");
|
||||
endpoint.setChannelRegistry(channelRegistry);
|
||||
endpoint.setHandler(handler);
|
||||
endpoint.setDefaultOutputChannelName("replyChannel");
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
bus.registerChannel("replyChannel", replyChannel);
|
||||
bus.start();
|
||||
StringMessage testMessage = new StringMessage(1, "test");
|
||||
channel.send(testMessage);
|
||||
Message<String> reply = replyChannel.receive(50);
|
||||
endpoint.handle(new StringMessage(1, "test"));
|
||||
Message<?> reply = replyChannel.receive(50);
|
||||
assertNotNull(reply);
|
||||
assertEquals("hello test", reply.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExplicitReplyChannel() throws Exception {
|
||||
MessageChannel channel = new SimpleChannel();
|
||||
final MessageChannel replyChannel = new SimpleChannel();
|
||||
ChannelRegistry channelRegistry = new DefaultChannelRegistry();
|
||||
channelRegistry.registerChannel("replyChannel", replyChannel);
|
||||
MessageHandler handler = new MessageHandler() {
|
||||
public Message<?> handle(Message<?> message) {
|
||||
return new StringMessage("123", "hello " + message.getPayload());
|
||||
}
|
||||
};
|
||||
DefaultMessageEndpoint endpoint = new DefaultMessageEndpoint();
|
||||
endpoint.setInputChannelName("testChannel");
|
||||
endpoint.setChannelRegistry(channelRegistry);
|
||||
endpoint.setHandler(handler);
|
||||
MessageBus bus = new MessageBus();
|
||||
bus.registerChannel("testChannel", channel);
|
||||
bus.registerEndpoint("testEndpoint", endpoint);
|
||||
bus.registerChannel("replyChannel", replyChannel);
|
||||
bus.start();
|
||||
StringMessage testMessage = new StringMessage(1, "test");
|
||||
testMessage.getHeader().setReplyChannelName("replyChannel");
|
||||
channel.send(testMessage);
|
||||
endpoint.handle(testMessage);
|
||||
Message<?> reply = replyChannel.receive(50);
|
||||
assertNotNull(reply);
|
||||
assertEquals("hello test", reply.getPayload());
|
||||
|
||||
Reference in New Issue
Block a user