@ApplicationScoped public class InMemoryConnector extends Object implements IncomingConnectorFactory, OutgoingConnectorFactory
Modifier and Type | Field and Description |
---|---|
static String |
CONNECTOR |
CHANNEL_NAME_ATTRIBUTE, CONNECTOR_ATTRIBUTE, CONNECTOR_PREFIX, INCOMING_PREFIX, OUTGOING_PREFIX
Constructor and Description |
---|
InMemoryConnector() |
Modifier and Type | Method and Description |
---|---|
static void |
clear()
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 an
InMemorySink associated to the channel named channel . |
<T> InMemorySource<T> |
source(String channel)
Retrieves an
InMemorySource associated to the channel named channel . |
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.
|
public static final String CONNECTOR
public static Map<String,String> switchIncomingChannelsToInMemory(String... channels)
This method is generally used before tests to avoid using an external broker for a specific channel. You can then
retrieve the InMemorySource
using:
@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);
channels
- the channels to switch, must not be null
, must not contain null
, must not contain
a blank valuepublic static Map<String,String> switchOutgoingChannelsToInMemory(String... channels)
This method is generally used before tests to avoid using an external broker for a specific channel. You can then
retrieve the InMemorySink
using:
@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);
channels
- the channels to switch, must not be null
, must not contain null
, must not contain
a blank valuepublic static void clear()
This method is generally used after tests to reset the original configuration.
public org.eclipse.microprofile.reactive.streams.operators.PublisherBuilder<? extends Message<?>> getPublisherBuilder(org.eclipse.microprofile.config.Config config)
IncomingConnectorFactory
connector
, using the Connector
qualifier's parameter indicating a key to
which IncomingConnectorFactory
to use.
Note that the connection to the transport or broker is generally postponed until the subscription occurs.
getPublisherBuilder
in interface IncomingConnectorFactory
config
- the configuration, must not be null
, must contain the ConnectorFactory.CHANNEL_NAME_ATTRIBUTE
attribute.PublisherBuilder
, will not be null
.public org.eclipse.microprofile.reactive.streams.operators.SubscriberBuilder<? extends Message<?>,Void> getSubscriberBuilder(org.eclipse.microprofile.config.Config config)
OutgoingConnectorFactory
connector
, using the Connector
qualifier's parameter indicating a key to
which Outgoing
to use.
Note that the connection to the transport or broker is generally postponed until the subscription.
getSubscriberBuilder
in interface OutgoingConnectorFactory
config
- the configuration, never null
, must contain the ConnectorFactory.CHANNEL_NAME_ATTRIBUTE
attribute.SubscriberBuilder
, must not be null
.public <T> InMemorySource<T> source(String channel)
InMemorySource
associated to the channel named channel
.
This channel must use the in-memory connected.
The returned InMemorySource
lets you send messages or payloads to the channel, mocking the real
interactions.
T
- the type of message or payload sent to the channelchannel
- the name of the channel, must not be null
IllegalArgumentException
- if the channel name is null
or if the channel is not associated with the
in-memory connector.switchIncomingChannelsToInMemory(String...)
public <T> InMemorySink<T> sink(String channel)
InMemorySink
associated to the channel named channel
.
This channel must use the in-memory connected.
The returned InMemorySink
lets you checks the messages sent to the channel.
T
- the type of payload received by the channelchannel
- the name of the channel, must not be null
IllegalArgumentException
- if the channel name is null
or if the channel is not associated with the
in-memory connector.switchOutgoingChannelsToInMemory(String...)
Copyright © 2018–2021 SmallRye. All rights reserved.