Java Code Examples for javax.jms.Message#getJMSTimestamp()
The following examples show how to use
javax.jms.Message#getJMSTimestamp() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: JmsInstrumentationHelperImpl.java From apm-agent-java with Apache License 2.0 | 6 votes |
@Override public void setMessageAge(Message message, AbstractSpan span) { try { long messageTimestamp = message.getJMSTimestamp(); if (messageTimestamp > 0) { long now = System.currentTimeMillis(); if (now > messageTimestamp) { span.getContext().getMessage().withAge(now - messageTimestamp); } else { span.getContext().getMessage().withAge(0); } } } catch (JMSException e) { logger.warn("Failed to get message timestamp", e); } }
Example 2
Source File: JmsStreamSource.java From pentaho-kettle with Apache License 2.0 | 6 votes |
/** * Will receive messages from consumer. If timeout is hit, consumer.receive(timeout) * will return null, and the observable will be completed. */ private void receiveLoop() { Message message; try { while ( !closed.get() && ( message = consumer.receive( receiverTimeout ) ) != null ) { streamStep.logDebug( message.toString() ); Date date = new Date( message.getJMSTimestamp() ); DateFormat formatter = new SimpleDateFormat( "MM-dd-yyyy HH:mm:ss a" ); formatter.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); String jmsTimestamp = formatter.format( date ); acceptRows( singletonList( Arrays.asList( message.getBody( Object.class ), jmsDelegate.destinationName, message.getJMSMessageID(), jmsTimestamp, message.getJMSRedelivered() ) ) ); } } catch ( JMSRuntimeException | JMSException jmsException ) { error( jmsException ); } finally { super.close(); if ( !closed.get() ) { close(); streamStep.logBasic( getString( PKG, "JmsStreamSource.HitReceiveTimeout" ) ); } } }
Example 3
Source File: JmsCheckpointMark.java From beam with Apache License 2.0 | 6 votes |
/** * Acknowledge all outstanding message. Since we believe that messages will be delivered in * timestamp order, and acknowledged messages will not be retried, the newest message in this * batch is a good bound for future messages. */ @Override public void finalizeCheckpoint() { lock.writeLock().lock(); try { for (Message message : messages) { try { message.acknowledge(); Instant currentMessageTimestamp = new Instant(message.getJMSTimestamp()); if (currentMessageTimestamp.isAfter(oldestMessageTimestamp)) { oldestMessageTimestamp = currentMessageTimestamp; } } catch (Exception e) { LOG.error("Exception while finalizing message: ", e); } } messages.clear(); } finally { lock.writeLock().unlock(); } }
Example 4
Source File: JmsIO.java From beam with Apache License 2.0 | 6 votes |
@Override public boolean advance() throws IOException { try { Message message = this.consumer.receiveNoWait(); if (message == null) { currentMessage = null; return false; } checkpointMark.add(message); currentMessage = this.source.spec.getMessageMapper().mapMessage(message); currentTimestamp = new Instant(message.getJMSTimestamp()); return true; } catch (Exception e) { throw new IOException(e); } }
Example 5
Source File: Client.java From qpid-broker-j with Apache License 2.0 | 5 votes |
private ClientMessage buildClientMessage(final Message message) throws JMSException { String jmsMessageID = message.getJMSMessageID(); String jmsCorrelationID = message.getJMSCorrelationID(); byte[] jmsCorrelationIDAsBytes; try { jmsCorrelationIDAsBytes = message.getJMSCorrelationIDAsBytes(); } catch (JMSException e) { jmsCorrelationIDAsBytes = null; } long jmsTimestamp = message.getJMSTimestamp(); int jmsDeliveryMode = message.getJMSDeliveryMode(); boolean jmsRedelivered = message.getJMSRedelivered(); String jmsType = message.getJMSType(); long jmsExpiration = message.getJMSExpiration(); int jmsPriority = message.getJMSPriority(); return new JMSMessageAdaptor(jmsMessageID, jmsTimestamp, jmsCorrelationID, jmsCorrelationIDAsBytes, jmsDeliveryMode, jmsRedelivered, jmsType, jmsExpiration, jmsPriority); }
Example 6
Source File: TelemetryJmsQoS1IT.java From hono with Eclipse Public License 2.0 | 5 votes |
private static void gatherStatistics(final LongSummaryStatistics stats, final Message message) { try { final long duration = System.currentTimeMillis() - message.getJMSTimestamp(); stats.accept(duration); } catch (final JMSException e) { LOG.error("Failed to get timestamp from message: {}", e.getMessage()); } }
Example 7
Source File: ConsumerParticipant.java From qpid-broker-j with Apache License 2.0 | 5 votes |
private long getMessageTimestamp(final Message message) { try { return message.getJMSTimestamp(); } catch (JMSException e) { throw new DistributedTestException("Cannot get message timestamp!", e); } }
Example 8
Source File: JmsCheckpointMark.java From beam with Apache License 2.0 | 5 votes |
void add(Message message) throws Exception { lock.writeLock().lock(); try { Instant currentMessageTimestamp = new Instant(message.getJMSTimestamp()); if (currentMessageTimestamp.isBefore(oldestMessageTimestamp)) { oldestMessageTimestamp = currentMessageTimestamp; } messages.add(message); } finally { lock.writeLock().unlock(); } }
Example 9
Source File: DurableSubProcessTest.java From activemq-artemis with Apache License 2.0 | 5 votes |
/** * Checks if the message was not delivered fast enough. */ public void checkDeliveryTime(Message message) throws JMSException { long creation = message.getJMSTimestamp(); long min = System.currentTimeMillis() - (offline.max + online.min); if (min > creation) { SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss.SSS"); exit("" + this + ".checkDeliveryTime failed. Message time: " + df.format(new Date(creation)) + ", min: " + df.format(new Date(min)) + "\r\n" + message); } }
Example 10
Source File: DurableSubProcessWithRestartTest.java From activemq-artemis with Apache License 2.0 | 5 votes |
/** * Checks if the message was not delivered fast enough. */ @SuppressWarnings("unused") public void checkDeliveryTime(Message message) throws JMSException { long creation = message.getJMSTimestamp(); long min = System.currentTimeMillis() - (offline.max + online.min) * (BROKER_RESTART > 0 ? 4 : 1); if (false && min > creation) { SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss.SSS"); exit("" + this + ".checkDeliveryTime failed. Message time: " + df.format(new Date(creation)) + ", min: " + df.format(new Date(min)) + "\r\n" + message); } }
Example 11
Source File: DurableSubProcessConcurrentCommitActivateNoDuplicateTest.java From activemq-artemis with Apache License 2.0 | 5 votes |
/** * Checks if the message was not delivered fast enough. */ public void checkDeliveryTime(Message message) throws JMSException { long creation = message.getJMSTimestamp(); long min = System.currentTimeMillis() - (offline.max + online.min) * (BROKER_RESTART > 0 ? 4 : 1); if (false && min > creation) { SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss.SSS"); exit("" + this + ".checkDeliveryTime failed. Message time: " + df.format(new Date(creation)) + ", min: " + df.format(new Date(min)) + "\r\n" + message); } }
Example 12
Source File: TibcoUtils.java From iaf with Apache License 2.0 | 5 votes |
protected static long getQueueFirstMessageAge(Session jSession, String queueName, String messageSelector, long currentTime, boolean warn) throws JMSException { QueueBrowser queueBrowser = null; try { Queue queue = jSession.createQueue(queueName); if (messageSelector == null) { queueBrowser = jSession.createBrowser(queue); } else { queueBrowser = jSession.createBrowser(queue, messageSelector); } Enumeration enm = queueBrowser.getEnumeration(); if (enm.hasMoreElements()) { Object o = enm.nextElement(); if (o instanceof Message) { Message msg = (Message) o; long jmsTimestamp = msg.getJMSTimestamp(); return currentTime - jmsTimestamp; } else { if (warn) { log.warn("message was not of type Message, but [" + o.getClass().getName() + "]"); } return -2; } } else { return -1; } } finally { if (queueBrowser != null) { try { queueBrowser.close(); } catch (JMSException e) { log.warn("Exception on closing queueBrowser", e); } } } }
Example 13
Source File: MessageVerifier.java From qpid-broker-j with Apache License 2.0 | 4 votes |
private static void verifyMessageHeaders(final MessageDescription messageDescription, final Message message) throws VerificationException { try { for (Map.Entry<MessageDescription.MessageHeader, Serializable> entry : messageDescription.getHeaders() .entrySet()) { Object actualValue; switch (entry.getKey()) { case DESTINATION: actualValue = message.getJMSDestination(); break; case DELIVERY_MODE: actualValue = message.getJMSDeliveryMode(); break; case MESSAGE_ID: actualValue = message.getJMSMessageID(); break; case TIMESTAMP: actualValue = message.getJMSTimestamp(); break; case CORRELATION_ID: if (entry.getValue() instanceof byte[]) { actualValue = message.getJMSCorrelationIDAsBytes(); } else { actualValue = message.getJMSCorrelationID(); } break; case REPLY_TO: actualValue = message.getJMSReplyTo(); break; case REDELIVERED: actualValue = message.getJMSRedelivered(); break; case TYPE: actualValue = message.getJMSType(); break; case EXPIRATION: actualValue = message.getJMSExpiration(); break; case PRIORITY: actualValue = message.getJMSPriority(); break; default: throw new RuntimeException(String.format("unexpected message header '%s'", entry.getKey())); } verifyEquals(String.format("Unexpected message header '%s'", entry.getKey()), entry.getValue(), actualValue); } } catch (JMSException e) { throw new RuntimeException("Unexpected exception during message header verification", e); } }
Example 14
Source File: MessageProducerTest.java From activemq-artemis with Apache License 2.0 | 4 votes |
@Test public void testSetTimestampDisabled() throws Exception { Connection pconn = createConnection(); Connection cconn = createConnection(); try { Session ps = pconn.createSession(false, Session.AUTO_ACKNOWLEDGE); Session cs = cconn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer p = ps.createProducer(queue1); MessageConsumer c = cs.createConsumer(queue1); cconn.start(); p.setDisableMessageTimestamp(true); ProxyAssertSupport.assertTrue(p.getDisableMessageTimestamp()); p.send(ps.createMessage()); Message m = c.receive(3000); ProxyAssertSupport.assertEquals(0L, m.getJMSTimestamp()); p.setDisableMessageTimestamp(false); ProxyAssertSupport.assertFalse(p.getDisableMessageTimestamp()); long t1 = System.currentTimeMillis(); p.send(ps.createMessage()); m = c.receive(3000); long t2 = System.currentTimeMillis(); long timestamp = m.getJMSTimestamp(); ProxyAssertSupport.assertTrue(timestamp >= t1); ProxyAssertSupport.assertTrue(timestamp <= t2); } finally { pconn.close(); cconn.close(); } }
Example 15
Source File: JmsSearchProvider.java From olat with Apache License 2.0 | 4 votes |
@Override public void onMessage(final Message message) { if (log.isDebugEnabled()) { log.debug("onMessage, message=" + message); } try { final long sentTimestamp = message.getJMSTimestamp(); final long currentTimestamp = System.currentTimeMillis(); // check if received message is not too old because in case of overload we could have old search-messages if ((currentTimestamp - sentTimestamp) < receiveTimeout) { final String correlationID = message.getJMSCorrelationID(); final Destination replyTo = message.getJMSReplyTo(); if (message instanceof ObjectMessage) { final ObjectMessage objectMessage = (ObjectMessage) message; final SearchRequest searchRequest = (SearchRequest) objectMessage.getObject(); taskExecutorService.runTask(new Runnable() { @Override public void run() { onSearchMessage(searchRequest, correlationID, replyTo); } }); } else if (message instanceof TextMessage) { final TextMessage testMessage = (TextMessage) message; final String spellText = testMessage.getText(); taskExecutorService.runTask(new Runnable() { @Override public void run() { onSpellMessage(spellText, correlationID, replyTo); } }); } } else { // JMS message is too old, discard it (do nothing) log.warn("JMS message was too old, discard message, timeout=" + receiveTimeout + "ms , received time=" + (currentTimestamp - sentTimestamp) + "ms"); } } catch (final JMSException e) { log.error("error when receiving jms messages", e); return; // signal search not available } catch (final Error err) { log.warn("Error in onMessage, ", err); // OLAT-3973: don't throw exceptions here } catch (final RuntimeException runEx) { log.warn("RuntimeException in onMessage, ", runEx); // OLAT-3973: don't throw exceptions here } }
Example 16
Source File: JmsSearchProvider.java From olat with Apache License 2.0 | 4 votes |
@Override public void onMessage(final Message message) { if (log.isDebugEnabled()) { log.debug("onMessage, message=" + message); } try { final long sentTimestamp = message.getJMSTimestamp(); final long currentTimestamp = System.currentTimeMillis(); // check if received message is not too old because in case of overload we could have old search-messages if ((currentTimestamp - sentTimestamp) < receiveTimeout) { final String correlationID = message.getJMSCorrelationID(); final Destination replyTo = message.getJMSReplyTo(); if (message instanceof ObjectMessage) { final ObjectMessage objectMessage = (ObjectMessage) message; final SearchRequest searchRequest = (SearchRequest) objectMessage.getObject(); taskExecutorService.runTask(new Runnable() { @Override public void run() { onSearchMessage(searchRequest, correlationID, replyTo); } }); } else if (message instanceof TextMessage) { final TextMessage testMessage = (TextMessage) message; final String spellText = testMessage.getText(); taskExecutorService.runTask(new Runnable() { @Override public void run() { onSpellMessage(spellText, correlationID, replyTo); } }); } } else { // JMS message is too old, discard it (do nothing) log.warn("JMS message was too old, discard message, timeout=" + receiveTimeout + "ms , received time=" + (currentTimestamp - sentTimestamp) + "ms"); } } catch (final JMSException e) { log.error("error when receiving jms messages", e); return; // signal search not available } catch (final Error err) { log.warn("Error in onMessage, ", err); // OLAT-3973: don't throw exceptions here } catch (final RuntimeException runEx) { log.warn("RuntimeException in onMessage, ", runEx); // OLAT-3973: don't throw exceptions here } }
Example 17
Source File: MessageDumpWriter.java From a with Apache License 2.0 | 4 votes |
public MessageDump toDumpMessage(Message msg) throws JMSException{ MessageDump dump = new MessageDump(); dump.JMSCorrelationID = msg.getJMSCorrelationID(); dump.JMSMessageID = msg.getJMSMessageID(); dump.JMSType = msg.getJMSType(); dump.JMSDeliveryMode = msg.getJMSDeliveryMode(); dump.JMSExpiration = msg.getJMSExpiration(); dump.JMSRedelivered = msg.getJMSRedelivered(); dump.JMSTimestamp = msg.getJMSTimestamp(); dump.JMSPriority = msg.getJMSPriority(); @SuppressWarnings("rawtypes") Enumeration propertyNames = msg.getPropertyNames(); while(propertyNames.hasMoreElements()){ String property = (String) propertyNames.nextElement(); Object propertyValue = msg.getObjectProperty(property); if( propertyValue instanceof String){ dump.stringProperties.put(property, (String)propertyValue); } else if ( propertyValue instanceof Integer ){ dump.intProperties.put(property, (Integer)propertyValue); } else if ( propertyValue instanceof Long) { dump.longProperties.put(property, (Long)propertyValue); } else if( propertyValue instanceof Double) { dump.doubleProperties.put(property, (Double) propertyValue); } else if (propertyValue instanceof Short) { dump.shortProperties.put(property, (Short)propertyValue); } else if (propertyValue instanceof Float) { dump.floatProperties.put(property, (Float) propertyValue); } else if (propertyValue instanceof Byte) { dump.byteProperties.put(property, (Byte)propertyValue); } else if (propertyValue instanceof Boolean) { dump.boolProperties.put(property, (Boolean)propertyValue); } else if (propertyValue instanceof Serializable){ // Object property.. if it's on Classpath and Serializable byte[] propBytes = SerializationUtils.serialize((Serializable) propertyValue); dump.objectProperties.put(property, Base64.encodeBase64String(propBytes)); } else { // Corner case. throw new IllegalArgumentException("Property of key '"+ property +"' is not serializable. Type is: " + propertyValue.getClass().getCanonicalName()); } } dump.body = ""; dump.type = ""; if (msg instanceof TextMessage) { dump.body = ((TextMessage)msg).getText(); dump.type = "TextMessage"; } else if (msg instanceof BytesMessage) { BytesMessage bm = (BytesMessage)msg; byte[] bytes = new byte[(int) bm.getBodyLength()]; bm.readBytes(bytes); dump.body = Base64.encodeBase64String(bytes); dump.type = "BytesMessage"; } else if (msg instanceof ObjectMessage) { ObjectMessage om = (ObjectMessage)msg; byte[] objectBytes = SerializationUtils.serialize(om.getObject()); dump.body = Base64.encodeBase64String(objectBytes); dump.type = "ObjectMessage"; } return dump; }
Example 18
Source File: SpringJmsConnector.java From iaf with Apache License 2.0 | 4 votes |
@Override public void onMessage(Message message, Session session) throws JMSException { TransactionStatus txStatus=null; long onMessageStart= System.currentTimeMillis(); long jmsTimestamp= message.getJMSTimestamp(); threadsProcessing.increase(); Thread.currentThread().setName(getReceiver().getName()+"["+threadsProcessing.getValue()+"]"); try { if (TX!=null) { txStatus = txManager.getTransaction(TX); } Map<String,Object> threadContext = new HashMap<>(); try { IPortConnectedListener<Message> listener = getListener(); threadContext.put(THREAD_CONTEXT_SESSION_KEY,session); // if (log.isDebugEnabled()) log.debug("transaction status before: "+JtaUtil.displayTransactionStatus()); getReceiver().processRawMessage(listener, message, threadContext); // if (log.isDebugEnabled()) log.debug("transaction status after: "+JtaUtil.displayTransactionStatus()); } catch (ListenerException e) { getReceiver().increaseRetryIntervalAndWait(e,getLogPrefix()); if (txStatus!=null) { txStatus.setRollbackOnly(); } } finally { if (txStatus==null && jmsContainer.isSessionTransacted()) { log.debug(getLogPrefix()+"committing JMS session"); session.commit(); } } } finally { if (txStatus!=null) { txManager.commit(txStatus); } threadsProcessing.decrease(); if (log.isInfoEnabled()) { long onMessageEnd= System.currentTimeMillis(); log.info(getLogPrefix()+"A) JMSMessageTime ["+DateUtils.format(jmsTimestamp)+"]"); log.info(getLogPrefix()+"B) onMessageStart ["+DateUtils.format(onMessageStart)+"] diff (~'queing' time) ["+(onMessageStart-jmsTimestamp)+"]"); log.info(getLogPrefix()+"C) onMessageEnd ["+DateUtils.format(onMessageEnd)+"] diff (process time) ["+(onMessageEnd-onMessageStart)+"]"); } // boolean simulateCrashAfterCommit=true; // if (simulateCrashAfterCommit) { // toggle=!toggle; // if (toggle) { // JtaUtil.setRollbackOnly(); // throw new JMSException("simulate crash just before final commit"); // } // } } }
Example 19
Source File: JmsMessageListenerInstrumentation.java From apm-agent-java with Apache License 2.0 | 4 votes |
@SuppressWarnings("unused") @Advice.OnMethodEnter(suppress = Throwable.class) @Nullable public static Transaction beforeOnMessage(@Advice.Argument(0) @Nullable final Message message, @Advice.Origin Class<?> clazz) { if (message == null || tracer == null || tracer.currentTransaction() != null) { return null; } Destination destination = null; String destinationName = null; long timestamp = 0; try { destination = message.getJMSDestination(); timestamp = message.getJMSTimestamp(); } catch (JMSException e) { logger.warn("Failed to retrieve message's destination", e); } //noinspection ConstantConditions JmsInstrumentationHelper<Destination, Message, MessageListener> helper = jmsInstrHelperManager.getForClassLoaderOfClass(MessageListener.class); if (helper == null) { return null; } if (destination != null) { destinationName = helper.extractDestinationName(message, destination); if (helper.ignoreDestination(destinationName)) { return null; } } // Create a transaction - even if running on same JVM as the sender Transaction transaction = helper.startJmsTransaction(message, clazz); if (transaction != null) { transaction.withType(MESSAGING_TYPE) .withName(RECEIVE_NAME_PREFIX); if (destinationName != null) { helper.addDestinationDetails(message, destination, destinationName, transaction.appendToName(" from ")); } helper.addMessageDetails(message, transaction); helper.setMessageAge(message, transaction); transaction.activate(); } return transaction; }
Example 20
Source File: BaseRecordBuilder.java From kafka-connect-mq-source with Apache License 2.0 | 3 votes |
/** * Convert a message into a Kafka Connect SourceRecord. * * @param context the JMS context to use for building messages * @param topic the Kafka topic * @param messageBodyJms whether to interpret MQ messages as JMS messages * @param message the message * * @return the Kafka Connect SourceRecord * * @throws JMSException Message could not be converted */ @Override public SourceRecord toSourceRecord(JMSContext context, String topic, boolean messageBodyJms, Message message) throws JMSException { SchemaAndValue key = this.getKey(context, topic, message); SchemaAndValue value = this.getValue(context, topic, messageBodyJms, message); if (copyJmsPropertiesFlag && messageBodyJms) return new SourceRecord(null, null, topic, (Integer) null, key.schema(), key.value(), value.schema(), value.value(), message.getJMSTimestamp(), jmsToKafkaHeaderConverter.convertJmsPropertiesToKafkaHeaders(message)); else return new SourceRecord(null, null, topic, key.schema(), key.value(), value.schema(), value.value()); }