Class InMemoryConnector
- java.lang.Object
 - 
- io.smallrye.reactive.messaging.connectors.InMemoryConnector
 
 
- 
- All Implemented Interfaces:
 ConnectorFactory,IncomingConnectorFactory,OutgoingConnectorFactory
@ApplicationScoped public class InMemoryConnector extends Object implements IncomingConnectorFactory, OutgoingConnectorFactory
An implementation of connector used for testing applications without having to use external broker. The idea is to substitute the `connector` of a specific channel to use `smallrye-in-memory`. Then, your test can send message and checked the received messages. 
- 
- 
Field Summary
Fields Modifier and Type Field Description static StringCONNECTOR- 
Fields inherited from interface org.eclipse.microprofile.reactive.messaging.spi.ConnectorFactory
CHANNEL_NAME_ATTRIBUTE, CONNECTOR_ATTRIBUTE, CONNECTOR_PREFIX, INCOMING_PREFIX, OUTGOING_PREFIX 
 - 
 
- 
Constructor Summary
Constructors Constructor Description InMemoryConnector() 
- 
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidclear()Switch back the channel to their original connector.org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder<? extends Message<?>>getPublisherBuilder(org.eclipse.microprofile.config.Config config)Creates a channel for the given configuration.org.eclipse.microprofile.reactive.streams.operators.SubscriberBuilder<? extends Message<?>,Void>getSubscriberBuilder(org.eclipse.microprofile.config.Config config)Creates a channel for the given configuration.<T> InMemorySink<T>sink(String channel)Retrieves anInMemorySinkassociated to the channel namedchannel.<T> InMemorySource<T>source(String channel)Retrieves anInMemorySourceassociated to the channel namedchannel.static Map<String,String>switchIncomingChannelsToInMemory(String... channels)Switch the given incoming channel to in-memory.static Map<String,String>switchOutgoingChannelsToInMemory(String... channels)Switch the given outgoing channel to in-memory. 
 - 
 
- 
- 
Field Detail
- 
CONNECTOR
public static final String CONNECTOR
- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Method Detail
- 
switchIncomingChannelsToInMemory
public static Map<String,String> switchIncomingChannelsToInMemory(String... channels)
Switch the given incoming channel to in-memory. It replaces the previously used connector with the in-memory connector.This method is generally used before tests to avoid using an external broker for a specific channel. You can then retrieve the
InMemorySourceusing:@Inject @Any InMemoryConnector connector; //... @Before public void setup() { InMemoryConnector.switchIncomingChannelsToInMemory("my-channel"); } // .. InMemorySource<Integer> channel = connector.source("my-channel"); channel.send(1); channel.send(2);- Parameters:
 channels- the channels to switch, must not benull, must not containnull, must not contain a blank value- Returns:
 - The map of properties that have been defined. The method sets the system properties, but give you this map to pass the properties around if needed.
 
 
- 
switchOutgoingChannelsToInMemory
public static Map<String,String> switchOutgoingChannelsToInMemory(String... channels)
Switch the given outgoing channel to in-memory. It replaces the previously used connector with the in-memory connector.This method is generally used before tests to avoid using an external broker for a specific channel. You can then retrieve the
InMemorySinkusing:@Inject @Any InMemoryConnector connector; //... @Before public void setup() { InMemoryConnector.switchOutgoingChannelsToInMemory("my-channel"); } // .. InMemorySink<Integer> channel = connector.sink("my-channel"); assertThat(channel.received()).hasSize(3).extracting(Message::getPayload).containsExactly(1, 2);- Parameters:
 channels- the channels to switch, must not benull, must not containnull, must not contain a blank value- Returns:
 - The map of properties that have been defined. The method sets the system properties, but give you this map to pass these properties around if needed.
 
 
- 
clear
public static void clear()
Switch back the channel to their original connector.This method is generally used after tests to reset the original configuration.
 
- 
getPublisherBuilder
public org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder<? extends Message<?>> getPublisherBuilder(org.eclipse.microprofile.config.Config config)
Description copied from interface:IncomingConnectorFactoryCreates a channel for the given configuration. The channel's configuration is associated with a specificconnector, using theConnectorqualifier's parameter indicating a key to whichIncomingConnectorFactoryto use.Note that the connection to the transport or broker is generally postponed until the subscription occurs.
- Specified by:
 getPublisherBuilderin interfaceIncomingConnectorFactory- Parameters:
 config- the configuration, must not benull, must contain theConnectorFactory.CHANNEL_NAME_ATTRIBUTEattribute.- Returns:
 - the created 
PublisherBuilder, will not benull. 
 
- 
getSubscriberBuilder
public org.eclipse.microprofile.reactive.streams.operators.SubscriberBuilder<? extends Message<?>,Void> getSubscriberBuilder(org.eclipse.microprofile.config.Config config)
Description copied from interface:OutgoingConnectorFactoryCreates a channel for the given configuration. The channel's configuration is associated with a specificconnector, using theConnectorqualifier's parameter indicating a key to whichOutgoingto use.Note that the connection to the transport or broker is generally postponed until the subscription.
- Specified by:
 getSubscriberBuilderin interfaceOutgoingConnectorFactory- Parameters:
 config- the configuration, nevernull, must contain theConnectorFactory.CHANNEL_NAME_ATTRIBUTEattribute.- Returns:
 - the created 
SubscriberBuilder, must not benull. 
 
- 
source
public <T> InMemorySource<T> source(String channel)
Retrieves anInMemorySourceassociated to the channel namedchannel. This channel must use the in-memory connected.The returned
InMemorySourcelets you send messages or payloads to the channel, mocking the real interactions.- Type Parameters:
 T- the type of message or payload sent to the channel- Parameters:
 channel- the name of the channel, must not benull- Returns:
 - the source
 - Throws:
 IllegalArgumentException- if the channel name isnullor if the channel is not associated with the in-memory connector.- See Also:
 switchIncomingChannelsToInMemory(String...)
 
- 
sink
public <T> InMemorySink<T> sink(String channel)
Retrieves anInMemorySinkassociated to the channel namedchannel. This channel must use the in-memory connected.The returned
InMemorySinklets you checks the messages sent to the channel.- Type Parameters:
 T- the type of payload received by the channel- Parameters:
 channel- the name of the channel, must not benull- Returns:
 - the sink
 - Throws:
 IllegalArgumentException- if the channel name isnullor if the channel is not associated with the in-memory connector.- See Also:
 switchOutgoingChannelsToInMemory(String...)
 
 - 
 
 -