com.atlassian.jira.cluster
Class OfBizMessageHandlerService

java.lang.Object
  extended by com.atlassian.jira.cluster.OfBizMessageHandlerService
All Implemented Interfaces:
ClusterMessagingService, MessageHandlerService

public class OfBizMessageHandlerService
extends Object
implements MessageHandlerService

Provides an implementation for the ClusterMessagingService that uses OfBiz to manage the message queue in the database and holds any listeners via a weak reference so that it doesn't keep listeners alive across plugin restarts, etc. Polls the database on a regular interval to see if there are actions to perform

Since:
v6.1

Constructor Summary
OfBizMessageHandlerService(NodeStateManager nodeStateManager, OfBizClusterMessageStore clusterMessageStore, com.atlassian.event.api.EventPublisher eventPublisher)
           
 
Method Summary
 List<ClusterMessage> receiveMessages()
           
 void registerListener(String channel, ClusterMessageConsumer consumer)
          Register a ClusterMessageConsumer to receive messages sent to the nominated channel.
 ClusterMessage sendMessage(String destinationId, Message message)
           
 void sendRemote(String channel, String message)
          Sends an inter-node message to registered listeners, listeners on the node the message was raised will not be notified.
 void start()
           
 void stop()
           
 void unregisterListener(ClusterMessageConsumer consumer)
          Removes a ClusterMessageConsumer from all channels.
 void unregisterListener(String channel, ClusterMessageConsumer consumer)
          Removes a ClusterMessageConsumer from the channel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OfBizMessageHandlerService

public OfBizMessageHandlerService(NodeStateManager nodeStateManager,
                                  OfBizClusterMessageStore clusterMessageStore,
                                  com.atlassian.event.api.EventPublisher eventPublisher)
Method Detail

sendMessage

@Nullable
public ClusterMessage sendMessage(String destinationId,
                                           Message message)
Specified by:
sendMessage in interface MessageHandlerService

receiveMessages

public List<ClusterMessage> receiveMessages()
Specified by:
receiveMessages in interface MessageHandlerService

start

public void start()
Specified by:
start in interface MessageHandlerService

stop

public void stop()
Specified by:
stop in interface MessageHandlerService

registerListener

public void registerListener(String channel,
                             ClusterMessageConsumer consumer)
Description copied from interface: ClusterMessagingService
Register a ClusterMessageConsumer to receive messages sent to the nominated channel. The receive method of the ClusterMessageConsumer will be invoked when a message is sent to a channel it is listening to. Registering a new listener for a channel will not remove any existing listeners on that channel. Listeners are weakly referenced, it is the responsibility of the caller to ensure that listeners are not prematurely garbage collected.

Specified by:
registerListener in interface ClusterMessagingService
Parameters:
channel - The name of the channel
consumer - The consumer that will receive messages

unregisterListener

public void unregisterListener(String channel,
                               ClusterMessageConsumer consumer)
Description copied from interface: ClusterMessagingService
Removes a ClusterMessageConsumer from the channel. The ClusterMessageConsumer will no longer receive messages that are sent to the nominated channel.

Specified by:
unregisterListener in interface ClusterMessagingService
Parameters:
channel - The name of the channel
consumer - The consumer to be unregistered

unregisterListener

public void unregisterListener(ClusterMessageConsumer consumer)
Description copied from interface: ClusterMessagingService
Removes a ClusterMessageConsumer from all channels. The ClusterMessageConsumer will no longer receive any messages.

Specified by:
unregisterListener in interface ClusterMessagingService
Parameters:
consumer - The consumer to be unregistered

sendRemote

public void sendRemote(String channel,
                       String message)
Description copied from interface: ClusterMessagingService
Sends an inter-node message to registered listeners, listeners on the node the message was raised will not be notified.

Specified by:
sendRemote in interface ClusterMessagingService
Parameters:
channel - The name of the channel (up to 20 alphanumeric characters in length)
message - The message to send (up to 200 characters in length)


Copyright © 2002-2014 Atlassian. All Rights Reserved.