void onStompCommit(TransactionId transactionId) { MessageAck ack = null; synchronized (this) { for (Iterator<?> iter = dispatchedMessage.entrySet().iterator(); iter.hasNext();) { @SuppressWarnings("rawtypes") Map.Entry entry = (Entry)iter.next(); MessageDispatch msg = (MessageDispatch)entry.getValue(); if (unconsumedMessage.contains(msg)) { iter.remove(); } } // For individual Ack we already sent an Ack that will be applied on commit // we don't send a second standard Ack as that would produce an error. if (!unconsumedMessage.isEmpty() && ackMode == CLIENT_ACK) { ack = new MessageAck(unconsumedMessage.getLast(), MessageAck.STANDARD_ACK_TYPE, unconsumedMessage.size()); ack.setTransactionId(transactionId); unconsumedMessage.clear(); } } // avoid contention with onMessageDispatch if (ack != null) { protocolConverter.getStompTransport().sendToActiveMQ(ack); } }
protected void sendToStomp(StompFrame command) throws IOException { stompTransport.sendToStomp(command); }
void onMessageDispatch(MessageDispatch md, String ackId) throws IOException, JMSException { ActiveMQMessage message = (ActiveMQMessage)md.getMessage(); if (ackMode.equals(CLIENT_ACK) || ackMode.equals(INDIVIDUAL_ACK)) { synchronized (this) { dispatchedMessage.put(message.getMessageId(), md); } } else if (ackMode.equals(AUTO_ACK)) { MessageAck ack = new MessageAck(md, MessageAck.STANDARD_ACK_TYPE, 1); protocolConverter.getStompTransport().sendToActiveMQ(ack); } boolean ignoreTransformation = false; if (transformation != null && !( message instanceof ActiveMQBytesMessage ) ) { message.setReadOnlyProperties(false); message.setStringProperty(Stomp.Headers.TRANSFORMATION, transformation); } else { if (message.getStringProperty(Stomp.Headers.TRANSFORMATION) != null) { ignoreTransformation = true; } } StompFrame command = protocolConverter.convertMessage(message, ignoreTransformation); command.setAction(Stomp.Responses.MESSAGE); if (subscriptionId != null) { command.getHeaders().put(Stomp.Headers.Message.SUBSCRIPTION, subscriptionId); } if (ackId != null) { command.getHeaders().put(Stomp.Headers.Message.ACK_ID, ackId); } protocolConverter.getStompTransport().sendToStomp(command); }
getStompTransport().onException(e);
protected void configureInactivityMonitor(String heartBeatConfig) throws ProtocolException { String[] keepAliveOpts = heartBeatConfig.split(Stomp.COMMA); if (keepAliveOpts == null || keepAliveOpts.length != 2) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } else { try { hbReadInterval = (Long.parseLong(keepAliveOpts[0])); hbWriteInterval = Long.parseLong(keepAliveOpts[1]); } catch(NumberFormatException e) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } try { StompInactivityMonitor monitor = this.stompTransport.getInactivityMonitor(); monitor.setReadCheckTime((long) (hbReadInterval * hbGracePeriodMultiplier)); monitor.setInitialDelayTime(Math.min(hbReadInterval, hbWriteInterval)); monitor.setWriteCheckTime(hbWriteInterval); monitor.startMonitoring(); } catch(Exception ex) { hbReadInterval = 0; hbWriteInterval = 0; } if (LOG.isDebugEnabled()) { LOG.debug("Stomp Connect heartbeat conf RW[{},{}]", hbReadInterval, hbWriteInterval); } } }
connectionInfo.setUserName(login); connectionInfo.setPassword(passcode); connectionInfo.setTransportContext(stompTransport.getPeerCertificates());
void onMessageDispatch(MessageDispatch md, String ackId) throws IOException, JMSException { ActiveMQMessage message = (ActiveMQMessage)md.getMessage(); if (ackMode.equals(CLIENT_ACK) || ackMode.equals(INDIVIDUAL_ACK)) { synchronized (this) { dispatchedMessage.put(message.getMessageId(), md); } } else if (ackMode.equals(AUTO_ACK)) { MessageAck ack = new MessageAck(md, MessageAck.STANDARD_ACK_TYPE, 1); protocolConverter.getStompTransport().sendToActiveMQ(ack); } boolean ignoreTransformation = false; if (transformation != null && !( message instanceof ActiveMQBytesMessage ) ) { message.setReadOnlyProperties(false); message.setStringProperty(Stomp.Headers.TRANSFORMATION, transformation); } else { if (message.getStringProperty(Stomp.Headers.TRANSFORMATION) != null) { ignoreTransformation = true; } } StompFrame command = protocolConverter.convertMessage(message, ignoreTransformation); command.setAction(Stomp.Responses.MESSAGE); if (subscriptionId != null) { command.getHeaders().put(Stomp.Headers.Message.SUBSCRIPTION, subscriptionId); } if (ackId != null) { command.getHeaders().put(Stomp.Headers.Message.ACK_ID, ackId); } protocolConverter.getStompTransport().sendToStomp(command); }
getStompTransport().onException(e);
protected void configureInactivityMonitor(String heartBeatConfig) throws ProtocolException { String[] keepAliveOpts = heartBeatConfig.split(Stomp.COMMA); if (keepAliveOpts == null || keepAliveOpts.length != 2) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } else { try { hbReadInterval = (Long.parseLong(keepAliveOpts[0])); hbWriteInterval = Long.parseLong(keepAliveOpts[1]); } catch(NumberFormatException e) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } try { StompInactivityMonitor monitor = this.stompTransport.getInactivityMonitor(); monitor.setReadCheckTime((long) (hbReadInterval * hbGracePeriodMultiplier)); monitor.setInitialDelayTime(Math.min(hbReadInterval, hbWriteInterval)); monitor.setWriteCheckTime(hbWriteInterval); monitor.startMonitoring(); } catch(Exception ex) { hbReadInterval = 0; hbWriteInterval = 0; } if (LOG.isDebugEnabled()) { LOG.debug("Stomp Connect heartbeat conf RW[{},{}]", hbReadInterval, hbWriteInterval); } } }
void onMessageDispatch(MessageDispatch md, String ackId) throws IOException, JMSException { ActiveMQMessage message = (ActiveMQMessage)md.getMessage(); if (ackMode.equals(CLIENT_ACK) || ackMode.equals(INDIVIDUAL_ACK)) { synchronized (this) { dispatchedMessage.put(message.getMessageId(), md); } } else if (ackMode.equals(AUTO_ACK)) { MessageAck ack = new MessageAck(md, MessageAck.STANDARD_ACK_TYPE, 1); protocolConverter.getStompTransport().sendToActiveMQ(ack); } boolean ignoreTransformation = false; if (transformation != null && !( message instanceof ActiveMQBytesMessage ) ) { message.setReadOnlyProperties(false); message.setStringProperty(Stomp.Headers.TRANSFORMATION, transformation); } else { if (message.getStringProperty(Stomp.Headers.TRANSFORMATION) != null) { ignoreTransformation = true; } } StompFrame command = protocolConverter.convertMessage(message, ignoreTransformation); command.setAction(Stomp.Responses.MESSAGE); if (subscriptionId != null) { command.getHeaders().put(Stomp.Headers.Message.SUBSCRIPTION, subscriptionId); } if (ackId != null) { command.getHeaders().put(Stomp.Headers.Message.ACK_ID, ackId); } protocolConverter.getStompTransport().sendToStomp(command); }
protected void sendToStomp(StompFrame command) throws IOException { stompTransport.sendToStomp(command); }
getStompTransport().onException(e);
void onStompCommit(TransactionId transactionId) { MessageAck ack = null; synchronized (this) { for (Iterator<?> iter = dispatchedMessage.entrySet().iterator(); iter.hasNext();) { @SuppressWarnings("rawtypes") Map.Entry entry = (Entry)iter.next(); MessageDispatch msg = (MessageDispatch)entry.getValue(); if (unconsumedMessage.contains(msg)) { iter.remove(); } } // For individual Ack we already sent an Ack that will be applied on commit // we don't send a second standard Ack as that would produce an error. if (!unconsumedMessage.isEmpty() && ackMode == CLIENT_ACK) { ack = new MessageAck(unconsumedMessage.getLast(), MessageAck.STANDARD_ACK_TYPE, unconsumedMessage.size()); ack.setTransactionId(transactionId); unconsumedMessage.clear(); } } // avoid contention with onMessageDispatch if (ack != null) { protocolConverter.getStompTransport().sendToActiveMQ(ack); } }
protected void configureInactivityMonitor(String heartBeatConfig) throws ProtocolException { String[] keepAliveOpts = heartBeatConfig.split(Stomp.COMMA); if (keepAliveOpts == null || keepAliveOpts.length != 2) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } else { try { hbReadInterval = (Long.parseLong(keepAliveOpts[0])); hbWriteInterval = Long.parseLong(keepAliveOpts[1]); } catch(NumberFormatException e) { throw new ProtocolException("Invalid heart-beat header:" + heartBeatConfig, true); } try { StompInactivityMonitor monitor = this.stompTransport.getInactivityMonitor(); monitor.setReadCheckTime((long) (hbReadInterval * hbGracePeriodMultiplier)); monitor.setInitialDelayTime(Math.min(hbReadInterval, hbWriteInterval)); monitor.setWriteCheckTime(hbWriteInterval); monitor.startMonitoring(); } catch(Exception ex) { hbReadInterval = 0; hbWriteInterval = 0; } if (LOG.isDebugEnabled()) { LOG.debug("Stomp Connect heartbeat conf RW[{},{}]", hbReadInterval, hbWriteInterval); } } }
void onMessageDispatch(MessageDispatch md) throws IOException, JMSException { ActiveMQMessage message = (ActiveMQMessage)md.getMessage(); if (ackMode == CLIENT_ACK) { synchronized (this) { dispatchedMessage.put(message.getMessageId(), md); } } else if (ackMode == INDIVIDUAL_ACK) { synchronized (this) { dispatchedMessage.put(message.getMessageId(), md); } } else if (ackMode == AUTO_ACK) { MessageAck ack = new MessageAck(md, MessageAck.STANDARD_ACK_TYPE, 1); protocolConverter.getStompTransport().sendToActiveMQ(ack); } boolean ignoreTransformation = false; if (transformation != null && !( message instanceof ActiveMQBytesMessage ) ) { message.setReadOnlyProperties(false); message.setStringProperty(Stomp.Headers.TRANSFORMATION, transformation); } else { if (message.getStringProperty(Stomp.Headers.TRANSFORMATION) != null) { ignoreTransformation = true; } } StompFrame command = protocolConverter.convertMessage(message, ignoreTransformation); command.setAction(Stomp.Responses.MESSAGE); if (subscriptionId != null) { command.getHeaders().put(Stomp.Headers.Message.SUBSCRIPTION, subscriptionId); } protocolConverter.getStompTransport().sendToStomp(command); }
protected void sendToStomp(StompFrame command) throws IOException { stompTransport.sendToStomp(command); }
getStompTransport().onException(e);
void onStompCommit(TransactionId transactionId) { MessageAck ack = null; synchronized (this) { for (Iterator<?> iter = dispatchedMessage.entrySet().iterator(); iter.hasNext();) { @SuppressWarnings("rawtypes") Map.Entry entry = (Entry)iter.next(); MessageDispatch msg = (MessageDispatch)entry.getValue(); if (unconsumedMessage.contains(msg)) { iter.remove(); } } // For individual Ack we already sent an Ack that will be applied on commit // we don't send a second standard Ack as that would produce an error. if (!unconsumedMessage.isEmpty() && ackMode == CLIENT_ACK) { ack = new MessageAck(unconsumedMessage.getLast(), MessageAck.STANDARD_ACK_TYPE, unconsumedMessage.size()); ack.setTransactionId(transactionId); unconsumedMessage.clear(); } } // avoid contention with onMessageDispatch if (ack != null) { protocolConverter.getStompTransport().sendToActiveMQ(ack); } }
protected void sendToStomp(StompFrame command) throws IOException { stompTransport.sendToStomp(command); }
getStompTransport().onException(IOExceptionSupport.create(exception)); return;