Package it.tidalwave.messagebus.spi
Class SimpleMessageBus
java.lang.Object
it.tidalwave.messagebus.spi.SimpleMessageBus
- All Implemented Interfaces:
MessageBus
A partial implementation of
MessageBus
.- Author:
- Fabrizio Giudici
-
Nested Class Summary
Nested classes/interfaces inherited from interface it.tidalwave.messagebus.MessageBus
MessageBus.Listener<T>
-
Constructor Summary
ConstructorDescriptionCreates a new instance with aSimpleAsyncMessageDelivery
strategy for delivery.SimpleMessageBus
(Executor executor) Creates a new instance given an executor and aSimpleAsyncMessageDelivery
strategy for delivery.SimpleMessageBus
(Executor executor, MessageDelivery messageDelivery) Creates a new instance given an executor and a strategy for delivery. -
Method Summary
Modifier and TypeMethodDescriptionprotected <T> void
dispatchMessage
(Class<T> topic, T message) Dispatches a message.<T> void
Publishes the given message and topic.<T> void
publish
(T message) Publishes the given event.<T> void
subscribe
(Class<T> topic, MessageBus.Listener<T> listener) Subscribes aMessageBus.Listener
to a topic.void
unsubscribe
(MessageBus.Listener<?> listener) Unsubscribes aMessageBus.Listener
.
-
Constructor Details
-
SimpleMessageBus
public SimpleMessageBus()Creates a new instance with aSimpleAsyncMessageDelivery
strategy for delivery. It will use its own thread pool. -
SimpleMessageBus
Creates a new instance given an executor and aSimpleAsyncMessageDelivery
strategy for delivery.- Parameters:
executor
- theExecutor
-
SimpleMessageBus
Creates a new instance given an executor and a strategy for delivery.- Parameters:
executor
- theExecutor
messageDelivery
- the strategy for delivery
-
-
Method Details
-
publish
public <T> void publish(@Nonnull T message) Publishes the given event. The topic is the class of the event.- Specified by:
publish
in interfaceMessageBus
- Type Parameters:
T
- the static type of the topic- Parameters:
message
- the event
-
publish
Publishes the given message and topic. Passing an explicit topic can be useful when dealing with a hierarchy of events (so, perhaps a subclass is passed but the topic is the root of the hierarchy).- Specified by:
publish
in interfaceMessageBus
- Type Parameters:
T
- the static type of the topic- Parameters:
topic
- the topicmessage
- the message
-
subscribe
Subscribes aMessageBus.Listener
to a topic.- Specified by:
subscribe
in interfaceMessageBus
- Type Parameters:
T
- the static type of the topic- Parameters:
topic
- the topiclistener
- the listener
-
unsubscribe
Unsubscribes aMessageBus.Listener
.- Specified by:
unsubscribe
in interfaceMessageBus
- Parameters:
listener
- the listener
-
dispatchMessage
Dispatches a message.- Type Parameters:
T
- the static type of the topic- Parameters:
topic
- the dynamic type of the topicmessage
- the message
-