@Override public void sendUnicastMessage(Address address, Message message, Priority priority) { if (!isEnabled()) { return; } if (_localAddresses.contains(address)) { sendLocalMessage(message); return; } ClusterChannel clusterChannel = getChannel(priority); clusterChannel.sendUnicastMessage(message, address); }
@Override protected void doReceive(Object messagePayload, Address srcAddress) { ClusterChannel clusterChannel = _clusterExecutorImpl.getClusterChannel(); if (srcAddress.equals(clusterChannel.getLocalAddress())) { return; } try { if (messagePayload instanceof ClusterRequest) { ClusterRequest clusterRequest = (ClusterRequest) messagePayload; Serializable responsePayload = _clusterExecutorImpl.handleReceivedClusterRequest(clusterRequest); if (clusterRequest.isFireAndForget()) { return; } try { clusterChannel.sendUnicastMessage(responsePayload, srcAddress); } catch (Throwable t) { _log.error("Unable to send message " + responsePayload, t); } } else if (messagePayload instanceof ClusterNodeResponse) { _clusterExecutorImpl.handleReceivedClusterNodeResponse( (ClusterNodeResponse) messagePayload); } else if (_log.isWarnEnabled()) { _log.warn("Unable to process message content of type " + messagePayload.getClass()); } } finally { ThreadLocalCacheManager.clearAll(Lifecycle.REQUEST); CentralizedThreadLocal.clearShortLivedThreadLocals(); } }