interface MessagingServiceInternal : MessagingService
myAddress |
abstract val myAddress: SingleMessageRecipient
Returns an address that refers to this node. |
stop |
abstract fun stop(): Unit
Initiates shutdown: if called from a thread that isn't controlled by the executor passed to the constructor then this will block until all in-flight messages have finished being handled and acknowledged. If called from a thread that's a part of the AffinityExecutor given to the constructor, it returns immediately and shutdown is asynchronous. |
addMessageHandler |
abstract fun addMessageHandler(topic: String = "", sessionID: Long = DEFAULT_SESSION_ID, callback: (ReceivedMessage, MessageHandlerRegistration) -> Unit): MessageHandlerRegistration
The provided function will be invoked for each received message whose topic matches the given string. The callback will run on threads provided by the messaging service, and the callback is expected to be thread safe as a result. abstract fun addMessageHandler(topicSession: TopicSession, callback: (ReceivedMessage, MessageHandlerRegistration) -> Unit): MessageHandlerRegistration
The provided function will be invoked for each received message whose topic and session matches. The callback will run on the main server thread provided when the messaging service is constructed, and a database transaction is set up for you automatically. |
createMessage |
abstract fun createMessage(topicSession: TopicSession, data: ByteArray, uuid: UUID = UUID.randomUUID()): Message
Returns an initialised Message with the current time, etc, already filled in. |
getAddressOfParty |
abstract fun getAddressOfParty(partyInfo: PartyInfo): MessageRecipients
Given information about either a specific node or a service returns its corresponding address |
removeMessageHandler |
abstract fun removeMessageHandler(registration: MessageHandlerRegistration): Unit
Removes a handler given the object returned from addMessageHandler. The callback will no longer be invoked once this method has returned, although executions that are currently in flight will not be interrupted. |
send |
abstract fun send(message: Message, target: MessageRecipients): Unit
Sends a message to the given receiver. The details of how receivers are identified is up to the messaging implementation: the type system provides an opaque high level view, with more fine grained control being available via type casting. Once this function returns the message is queued for delivery but not necessarily delivered: if the recipients are offline then the message could be queued hours or days later. |
createMessage |
fun MessagingService.createMessage(topic: String, sessionID: Long = DEFAULT_SESSION_ID, data: ByteArray): Message
Returns an initialised Message with the current time, etc, already filled in. |
onNext |
fun <M : Any> MessagingService.onNext(topic: String, sessionId: Long): ListenableFuture<M>
Returns a ListenableFuture of the next message payload (Message.data) which is received on the given topic and sessionId. The payload is deserialized to an object of type M. Any exceptions thrown will be captured by the future. |
runOnNextMessage |
fun MessagingService.runOnNextMessage(topic: String, sessionID: Long, callback: (ReceivedMessage) -> Unit): Unit
Registers a handler for the given topic and session ID that runs the given callback with the message and then removes itself. This is useful for one-shot handlers that aren't supposed to stick around permanently. Note that this callback doesn't take the registration object, unlike the callback to MessagingService.addMessageHandler, as the handler is automatically deregistered before the callback runs. fun MessagingService.runOnNextMessage(topicSession: TopicSession, callback: (ReceivedMessage) -> Unit): Unit
Registers a handler for the given topic and session that runs the given callback with the message and then removes itself. This is useful for one-shot handlers that aren't supposed to stick around permanently. Note that this callback doesn't take the registration object, unlike the callback to MessagingService.addMessageHandler. |
send |
fun MessagingService.send(topic: String, sessionID: Long, payload: Any, to: MessageRecipients, uuid: UUID = UUID.randomUUID()): Unit fun MessagingService.send(topicSession: TopicSession, payload: Any, to: MessageRecipients, uuid: UUID = UUID.randomUUID()): Unit |
sendRequest |
fun <R : Any> MessagingService.sendRequest(topic: String, request: ServiceRequestMessage, target: MessageRecipients): ListenableFuture<R>
Sends a ServiceRequestMessage to target and returns a ListenableFuture of the response. |
NodeMessagingClient |
class NodeMessagingClient : ArtemisMessagingComponent, MessagingServiceInternal
This class implements the MessagingService API using Apache Artemis, the successor to their ActiveMQ product. Artemis is a message queue broker and here we run a client connecting to the specified broker instance ArtemisMessagingServer. It's primarily concerned with peer-to-peer messaging. |