@Override public MessageQueue getQueue(QueueSession session) { return proxied.getQueue(session); }
@Override public Collection<MessageCallback> getReceivers(String subject) { Collection<MessageCallback> receivers = null; if (proxied == null) { receivers = offerGetReceivers(subject); } if (receivers == null) { receivers = proxied.getReceivers(subject); } return receivers; }
@Override public void addQueueClosedListener(QueueClosedListener listener) { proxied.addQueueClosedListener(listener); }
public synchronized void closeProxy(ServerMessageBus bus) { Assert.notNull("message bus reference cannot be null", bus); if (heldBusMonitor != null) { bus.attachMonitor(heldBusMonitor); } for (Map.Entry<String, MessageCallback> entry : heldSubscribe.entries()) { bus.subscribe(entry.getKey(), entry.getValue()); } for (Map.Entry<String, MessageCallback> entry : heldLocalSubscribe.entries()) { bus.subscribeLocal(entry.getKey(), entry.getValue()); } for (SubscribeListener subscribeListener : heldSubscribeListener) { bus.addSubscribeListener(subscribeListener); } for (UnsubscribeListener unsubscribeListener : heldUnsubscribeListener) { bus.addUnsubscribeListener(unsubscribeListener); } for (Message message : heldMessages) { bus.send(message); } for (Message message : heldGlobalMessages) { bus.sendGlobal(message); } for (Map.Entry<Message, Boolean> entry : heldMessageFireListener.entrySet()) { bus.send(entry.getKey(), entry.getValue()); } reset(); this.proxied = bus; }
case WhoHandles: { final String subject = message.get(String.class, Subject); if (serverMessageBus.hasRemoteSubscriptions(subject)) { final String sessionIdRequested = message.get(String.class, ClusterParts.SessId); if (serverMessageBus.getQueueBySession(sessionIdRequested) == null) { return; final String messageId = message.get(String.class, MessageId); final String sessId = message.get(String.class, SessId); final Message deferredMessage = serverMessageBus.getDeadLetterMessage(messageId); serverMessageBus.removeDeadLetterMessage(messageId); serverMessageBus.sendGlobal(forwardMessage); messageQueue = serverMessageBus.getQueueBySession(sessId); serverMessageBus.send(forwardMessage);
@Override public void closeQueue(String sessionId) { proxied.closeQueue(sessionId); }
@Override public void configure(ErraiServiceConfigurator service) { proxied.configure(service); }
@Override public Message getDeadLetterMessage(String messageId) { return proxied.getDeadLetterMessage(messageId); }
@Override public void addUnsubscribeListener(UnsubscribeListener listener) { Assert.notNull("unsubscribe listener cannot be null", listener); if (proxied != null || !offerAddUnsubscribeListener(listener)) { proxied.addUnsubscribeListener(listener); } }
@Override public void addSubscribeListener(SubscribeListener listener) { Assert.notNull("subscribe listener cannot be null", listener); if (proxied != null || !offerAddSubscribeListener(listener)) { proxied.addSubscribeListener(listener); } }
@Override public void associateNewQueue(QueueSession oldSession, QueueSession newSession) { proxied.associateNewQueue(oldSession, newSession); }
public synchronized void closeProxy(ServerMessageBus bus) { Assert.notNull("message bus reference cannot be null", bus); if (heldBusMonitor != null) { bus.attachMonitor(heldBusMonitor); } for (Map.Entry<String, MessageCallback> entry : heldSubscribe.entries()) { bus.subscribe(entry.getKey(), entry.getValue()); } for (Map.Entry<String, MessageCallback> entry : heldLocalSubscribe.entries()) { bus.subscribeLocal(entry.getKey(), entry.getValue()); } for (SubscribeListener subscribeListener : heldSubscribeListener) { bus.addSubscribeListener(subscribeListener); } for (UnsubscribeListener unsubscribeListener : heldUnsubscribeListener) { bus.addUnsubscribeListener(unsubscribeListener); } for (Message message : heldMessages) { bus.send(message); } for (Message message : heldGlobalMessages) { bus.sendGlobal(message); } for (Map.Entry<Message, Boolean> entry : heldMessageFireListener.entrySet()) { bus.send(entry.getKey(), entry.getValue()); } reset(); this.proxied = bus; }
case WhoHandles: { final String subject = message.get(String.class, Subject); if (serverMessageBus.hasRemoteSubscriptions(subject)) { final String sessionIdRequested = message.get(String.class, ClusterParts.SessId); if (serverMessageBus.getQueueBySession(sessionIdRequested) == null) { return; final String messageId = message.get(String.class, MessageId); final String sessId = message.get(String.class, SessId); final Message deferredMessage = serverMessageBus.getDeadLetterMessage(messageId); serverMessageBus.removeDeadLetterMessage(messageId); serverMessageBus.sendGlobal(forwardMessage); messageQueue = serverMessageBus.getQueueBySession(sessId); serverMessageBus.send(forwardMessage);
@Override public void closeQueue(MessageQueue queue) { proxied.closeQueue(queue); }
public void execute(final BootstrapContext context) { context.getBus().configure(context.getConfig()); } }
@Override public void clusterTransmit(final String sessionId, final String subject, final String messageId) { final Address knownAddress = sessionToNodeCache.getIfPresent(sessionId); if (knownAddress != null) { final Message forwardMessage = createForwardMessageFor(serverMessageBus.getDeadLetterMessage(messageId), messageId); try { jchannel.send(knownAddress, ErraiProtocol.encodePayload(forwardMessage.getParts())); } catch (Exception e) { e.printStackTrace(); } } else { final Message whoHandlesMessage = createWhoHandlesMessage(sessionId, subject, messageId); try { jchannel.send(getJGroupsMessage(whoHandlesMessage)); } catch (Exception e) { e.printStackTrace(); } } }
@Override public void addUnsubscribeListener(UnsubscribeListener listener) { Assert.notNull("unsubscribe listener cannot be null", listener); if (proxied != null || !offerAddUnsubscribeListener(listener)) { proxied.addUnsubscribeListener(listener); } }
@Override public void addSubscribeListener(SubscribeListener listener) { Assert.notNull("subscribe listener cannot be null", listener); if (proxied != null || !offerAddSubscribeListener(listener)) { proxied.addSubscribeListener(listener); } }
@Override public void associateNewQueue(QueueSession oldSession, QueueSession newSession) { proxied.associateNewQueue(oldSession, newSession); }
final MessageQueue queue = service.getBus().getQueue(session); if (queue == null) { switch (getConnectionPhase(httpServletRequest)) {