@Bean(name="message-router", parent=Kernel.class, active=true) public class MessageRouter extends AbstractMessageReceiver implements MessageRouterIfc, RegistrarBean, UnregisterAware
BasicComponent.ServerInfoVHostItemExtensionPacketWriterWithTimeout.HandlerHOUR, INCOMING_FILTERS_PROP_KEY, INCOMING_FILTERS_PROP_VAL, MAX_QUEUE_SIZE_PROP_KEY, MAX_QUEUE_SIZE_PROP_VAL, maxInQueueSize, maxOutQueueSize, maxQueueSize, MINUTE, OUTGOING_FILTERS_PROP_KEY, OUTGOING_FILTERS_PROP_VAL, PACKET_DELIVERY_RETRY_COUNT_PROP_KEY, SCHEDULER_THREADS_PROP_KEY, SECONDadmins, ALL_PROP_KEY, COMMAND_PROP_NODE, scriptCommands, scriptEngineManager, SCRIPTS_DIR_PROP_DEF, SCRIPTS_DIR_PROP_KEY, trusted, vHostManagerADMINS_PROP_KEY, AMP_CLASS_NAME, AMP_CLUST_CLASS_NAME, AUTH_DOMAIN_POOL_CLASS, AUTH_REPO_DOMAINS_PROP_KEY, AUTH_REPO_PARAMS_NODE, AUTH_REPO_POOL_CLASS, AUTH_REPO_URL_PROP_KEY, BOSH_CLUST_COMP_CLASS_NAME, BOSH_COMP_CLASS_NAME, C2S_CLUST_COMP_CLASS_NAME, C2S_COMP_CLASS_NAME, CL_COMP_CLASS_NAME, CLUSTER_CONECT, CLUSTER_CONTR_CLASS_NAME, CLUSTER_LISTEN, CLUSTER_MODE, CLUSTER_NODES, CLUSTER_NODES_PROP_KEY, COMP_PROT_CLASS_NAME, COMPONENT_ID_PROP_KEY, DEF_AMP_NAME, DEF_BOSH_NAME, DEF_C2S_NAME, DEF_CL_COMP_NAME, DEF_CLUST_CONTR_NAME, DEF_COMP_PROT_NAME, DEF_EVENTBUS_NAME, DEF_EXT_COMP_NAME, DEF_HOSTNAME_PROP_KEY, DEF_MONITOR_NAME, DEF_S2S_NAME, DEF_SM_NAME, DEF_STATS_NAME, DEF_VHOST_MAN_NAME, DEF_WS2S_NAME, DERBY_REPO_CLASS_PROP_VAL, DERBY_REPO_URL_PROP_VAL, DRUPAL_REPO_URL_PROP_VAL, DRUPALWP_REPO_CLASS_PROP_VAL, DUMMY_REPO_CLASS_PROP_VAL, EVENTBUS_CLASS_NAME, EXT_COMP_CLASS_NAME, GEN_ADMINS, GEN_AUTH_DB, GEN_AUTH_DB_URI, GEN_COMP_CLASS, GEN_COMP_NAME, GEN_CONF, GEN_CONFIG, GEN_CONFIG_ALL, GEN_CONFIG_COMP, GEN_CONFIG_CS, GEN_CONFIG_DEF, GEN_CONFIG_SM, GEN_DEBUG, GEN_DEBUG_PACKAGES, GEN_EXT_COMP, GEN_MAX_QUEUE_SIZE, GEN_SCRIPT_DIR, GEN_SM_PLUGINS, GEN_SREC_ADMINS, GEN_SREC_DB, GEN_SREC_DB_URI, GEN_TEST, GEN_TRUSTED, GEN_USER_DB, GEN_USER_DB_URI, GEN_USER_DB_URI_PROP_KEY, GEN_VIRT_HOSTS, HOSTNAMES_PROP_KEY, LIBRESOURCE_REPO_CLASS_PROP_VAL, LIBRESOURCE_REPO_URL_PROP_VAL, MONITOR_CLASS_NAME, MONITOR_CLUST_CLASS_NAME, MONITORING, MYSQL_REPO_CLASS_PROP_VAL, MYSQL_REPO_URL_PROP_VAL, PGSQL_REPO_CLASS_PROP_VAL, PGSQL_REPO_URL_PROP_VAL, ROUTER_COMP_CLASS_NAME, S2S_CLUST_COMP_CLASS_NAME, S2S_COMP_CLASS_NAME, SHARED_AUTH_REPO_PARAMS_PROP_KEY, SHARED_AUTH_REPO_PROP_KEY, SHARED_USER_REPO_PARAMS_PROP_KEY, SHARED_USER_REPO_PROP_KEY, SM_CLUST_COMP_CLASS_NAME, SM_COMP_CLASS_NAME, STANZA_WHITE_CHAR_ACK, STANZA_XMPP_ACK, STATS_CLASS_NAME, STRINGPREP_PROCESSOR, TIGASE_AUTH_REPO_CLASS_PROP_VAL, TIGASE_AUTH_REPO_URL_PROP_VAL, TIGASE_CUSTOM_AUTH_REPO_CLASS_PROP_VAL, TRUSTED_PROP_KEY, USER_DOMAIN_POOL_CLASS, USER_REPO_DOMAINS_PROP_KEY, USER_REPO_PARAMS_NODE, USER_REPO_POOL_CLASS, USER_REPO_POOL_SIZE, USER_REPO_POOL_SIZE_PROP_KEY, USER_REPO_URL_PROP_KEY, VHOST_MAN_CLASS_NAME, VHOST_MAN_CLUST_CLASS_NAME, WS2S_CLASS_NAME, WS2S_CLUST_CLASS_NAME, XML_REPO_CLASS_PROP_VAL, XML_REPO_URL_PROP_VAL, XMPP_STANZA_ACKCMD_FEATURES, DEF_FEATURES, INFO_XMLNS, ITEMS_XMLNS| Constructor and Description |
|---|
MessageRouter() |
| Modifier and Type | Method and Description |
|---|---|
void |
addComponent(ServerComponent component) |
void |
addRegistrator(ComponentRegistrator registr) |
void |
addRouter(MessageReceiver receiver) |
void |
beanConfigurationChanged(Collection<String> changedFields)
Method called when configuration was applied to bean.
|
void |
beforeUnregister()
Method called before bean unregister.
|
String |
getDiscoCategoryType()
Method returns component category type used for service discovery responses.
|
String |
getDiscoDescription()
Method returns description used for service discovery responses.
|
Element |
getDiscoInfo(JID toJid,
JID fromJid,
String node) |
protected Integer |
getMaxQueueSize(int def) |
Optional<Element> |
getServiceEntityCaps(JID fromJid) |
void |
getStatistics(StatisticsList list)
Method returns component statistics.
|
int |
hashCodeForPacket(Packet packet)
This method decides how incoming packets are distributed among processing threads.
|
void |
initBindings(Bindings binds)
Initialize a mapping of key/value pairs which can be used in scripts loaded by the server
|
void |
initialize()
Method will be called, when bean will be created, configured and ready to use.
|
int |
processingInThreads()
Concurrency control method.
|
int |
processingOutThreads()
Concurrency control method.
|
void |
processPacket(Packet packet)
This is the main
Packet processing method. |
void |
processPacketMR(Packet packet,
Queue<Packet> results) |
void |
register(Kernel kernel)
Method called when bean is being registered allowing developer to programatically register other beans.
|
void |
removeComponent(ServerComponent component) |
void |
removeRegistrator(ComponentRegistrator registr) |
void |
removeRouter(MessageReceiver receiver) |
void |
setComponentsAll(Set<ServerComponent> components) |
void |
setConfig(ConfiguratorAbstract config) |
void |
start() |
void |
stop() |
void |
unregister(Kernel kernel)
Method called while bean is being unregistered.
|
addOutPacket, addOutPacketNB, addOutPackets, addOutPacketWithTimeout, addOutPacketWithTimeout, addPacket, addPacketNB, addPackets, addRegexRouting, addTimerTask, addTimerTask, addTimerTask, addTimerTaskWithTimeout, addTimerTaskWithTimeout, clearRegexRoutings, everyHour, everyMinute, everySecond, getRegexRoutings, getResourceForPacketWithTimeout, isInRegexRoutings, newPacketId, processOutPacket, processPacket, release, removeRegexRouting, schedulerThreads, setCompId, setIncomingFilters, setName, setOutogingFilters, setParent, setSchedulerThreads_sizeaddComponentDomain, canCallCommand, canCallCommand, checkCommandAcl, checkCommandAcl, createScriptEngineManager, getComponentId, getComponentInfo, getDefaults, getDefHostName, getDefVHostItem, getDiscoCategory, getDiscoExtensionsForm, getDiscoFeatures, getDiscoFeatures, getDiscoInfo, getDiscoItems, getName, getNodesConnected, getNodesConnectedWithLocal, getScriptCommands, getScriptItems, getServiceEntity, getVHostItem, handlesLocalDomains, handlesNameSubdomains, handlesNonLocalDomains, initializationCompleted, isAdmin, isInitializationComplete, isLocalDomain, isLocalDomainOrComponent, isNonAdminCommands, isSubdomain, isTrusted, isTrusted, nodeConnected, nodeDisconnected, onNodeConnected, onNodeDisconnected, processScriptCommand, removeComponentDomain, removeServiceDiscoveryItem, setAdmins, setClusterController, setCommandsACL, setProperties, setScriptsBaseDir, setVHostManager, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceDiscoveryItem, updateServiceEntityclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetComponentId, getComponentInfo, getName, initializationCompleted, isInitializationComplete, processPacket, release, setNamegetNamegetDefHostNamepublic void register(Kernel kernel)
RegistrarBeanregister in interface RegistrarBeankernel - - instance from local scopepublic void unregister(Kernel kernel)
RegistrarBeanunregister in interface RegistrarBeankernel - - instance from local scopepublic void setComponentsAll(Set<ServerComponent> components)
public void addComponent(ServerComponent component) throws ConfigurationException
ConfigurationExceptionpublic void addRegistrator(ComponentRegistrator registr) throws ConfigurationException
ConfigurationExceptionpublic void addRouter(MessageReceiver receiver) throws ConfigurationException
ConfigurationExceptionpublic void beanConfigurationChanged(Collection<String> changedFields)
ConfigurationChangedAwarebeanConfigurationChanged in interface ConfigurationChangedAwarebeanConfigurationChanged in class AbstractMessageReceiverchangedFields - collection of field names which were changedpublic int hashCodeForPacket(Packet packet)
AbstractMessageReceiverint threadNo = Math.abs(hashCodeForPacket(packet) % N);
hashCodeForPacket in class AbstractMessageReceiverpacket - is a Packet which needs to be processed by some thread.public void initialize()
Initializableinitialize in interface Initializableinitialize in class BasicComponentpublic void initBindings(Bindings binds)
BasicComponentinitBindings in class BasicComponentbinds - A mapping of key/value pairs, all of whose keys are Strings.public int processingInThreads()
AbstractMessageReceiverprocessingInThreads in class AbstractMessageReceiverpublic int processingOutThreads()
AbstractMessageReceiverprocessingOutThreads in class AbstractMessageReceiverpublic void processPacket(Packet packet)
AbstractMessageReceiverPacket processing method. It is called concurrently from many threads so
implementing it in thread save manner is essential. The method is called for each packet addressed to the
component. Packet instance may be processed by different parts of the server,
different components or plugins at the same time. Therefore this is very important to tread the
Packet instance as unmodifiable object. addOutPacket(Packet) method.processPacket in class AbstractMessageReceiverpacket - is an instance of the Packet class passed for processing.public void removeComponent(ServerComponent component)
public void removeRegistrator(ComponentRegistrator registr)
public void removeRouter(MessageReceiver receiver)
public void start()
start in interface MessageReceiverstart in interface MessageRouterIfcstart in class AbstractMessageReceiverpublic void stop()
stop in class AbstractMessageReceiverpublic String getDiscoCategoryType()
BasicComponentgetDiscoCategoryType in class BasicComponentpublic String getDiscoDescription()
BasicComponentgetDiscoDescription in class BasicComponentpublic void getStatistics(StatisticsList list)
AbstractMessageReceiverLevel.FINEST assigned and must be put inside the
level guard to prevent generating them by the system monitor. The system monitor does not collect
FINEST statistics.
if (list.checkLevel(Level.FINEST)) {
// Some CPU intensive calculations or lengthy operations
list.add(getName(), "Statistic description", stat_value, Level.FINEST);
}
This way you make sure your extensive operation is not executed every second by the monitoring system and does
not affect the server performance.getStatistics in interface StatisticsContainerIfcgetStatistics in class AbstractMessageReceiverlist - is a StatistcsList where all statistics are stored.public void setConfig(ConfiguratorAbstract config) throws ConfigurationException
setConfig in interface MessageRouterIfcConfigurationExceptionpublic void beforeUnregister()
UnregisterAwarebeforeUnregister in interface UnregisterAwarepublic Optional<Element> getServiceEntityCaps(JID fromJid)
getServiceEntityCaps in class BasicComponentprotected Integer getMaxQueueSize(int def)
getMaxQueueSize in class AbstractMessageReceiverCopyright © 2004–2020 "Tigase, Inc.". All rights reserved.