@Override protected byte[] getPayload(IMessage azureMessage) { return azureMessage.getBody(); }
MessgeRenewLockLoop(IMessageReceiver innerReceiver, MessageAndSessionPump messageAndSessionPump, IMessage message, Instant stopRenewalAt) { super(); this.innerReceiver = innerReceiver; this.messageAndSessionPump = messageAndSessionPump; this.message = message; this.stopRenewalAt = stopRenewalAt; this.messageIdentifier = String.format("message with locktoken : %s, sequence number : %s", this.message.getLockToken(), this.message.getSequenceNumber()); }
private Duration getNextRenewInterval() { if (this.message.getLockedUntilUtc().isBefore(stopRenewalAt)) { return RenewLockLoop.getNextRenewInterval(this.message.getLockedUntilUtc(), this.messageIdentifier); } else { return null; } } }
@Override protected Map<String, Object> buildCustomHeaders(IMessage serviceBusMessage) { Map<String, Object> headers = new HashMap<>(); headers.put(AzureHeaders.RAW_ID, UUID.fromString(serviceBusMessage.getMessageId())); if (StringUtils.hasText(serviceBusMessage.getContentType())) { String contentType = serviceBusMessage.getContentType(); try { MimeType mimeType = MimeType.valueOf(contentType); headers.put(MessageHeaders.CONTENT_TYPE, mimeType.toString()); } catch (InvalidMimeTypeException e) { log.warn("Invalid mimeType '{}' from service bus message.", contentType); } } if (StringUtils.hasText(serviceBusMessage.getReplyTo())) { headers.put(MessageHeaders.REPLY_CHANNEL, serviceBusMessage.getReplyTo()); } return Collections.unmodifiableMap(headers); } }
int messageIndex = 0; for (IMessage message : messages) { UUID lockToken = message.getLockToken(); if (lockToken.equals(ClientConstants.ZEROLOCKTOKEN)) { throw new UnsupportedOperationException("Lock of a message received in ReceiveAndDelete mode cannot be renewed.");
@Override protected Map<String, Object> buildCustomHeaders(IMessage serviceBusMessage) { Map<String, Object> headers = new HashMap<>(); headers.put(AzureHeaders.RAW_ID, UUID.fromString(serviceBusMessage.getMessageId())); if (StringUtils.hasText(serviceBusMessage.getContentType())) { String contentType = serviceBusMessage.getContentType(); try { MimeType mimeType = MimeType.valueOf(contentType); headers.put(MessageHeaders.CONTENT_TYPE, mimeType.toString()); } catch (InvalidMimeTypeException e) { log.warn("Invalid mimeType '{}' from service bus message.", contentType); } } if (StringUtils.hasText(serviceBusMessage.getReplyTo())) { headers.put(MessageHeaders.REPLY_CHANNEL, serviceBusMessage.getReplyTo()); } return Collections.unmodifiableMap(headers); } }
@Override public CompletableFuture<Void> onMessageAsync(IMessage serviceBusMessage) { Map<String, Object> headers = new HashMap<>(); Checkpointer checkpointer = new AzureCheckpointer(() -> this.success(serviceBusMessage.getLockToken()), () -> this.failure(serviceBusMessage.getLockToken())); if (checkpointConfig.getCheckpointMode() == CheckpointMode.MANUAL) { headers.put(AzureHeaders.CHECKPOINTER, checkpointer); } Message<U> message = messageConverter.toMessage(serviceBusMessage, new MessageHeaders(headers), payloadType); consumer.accept(message); if (checkpointConfig.getCheckpointMode() == CheckpointMode.RECORD) { return checkpointer.success().whenComplete((v, t) -> checkpointHandler(message, t)); } return CompletableFuture.completedFuture(null); }
@Override protected byte[] getPayload(IMessage azureMessage) { return azureMessage.getBody(); }
this.receiveAndPumpMessage(); } else { TRACE_LOGGER.trace("Message with sequence number '{}' received from entity '{}'.", message.getSequenceNumber(), this.entityPath); renewLockLoop = new MessgeRenewLockLoop(this.innerReceiver, this, message, stopRenewMessageLockAt); renewLockLoop.startLoop(); TRACE_LOGGER.trace("Started loop to renew lock on message with sequence number '{}' until '{}'", message.getSequenceNumber(), stopRenewMessageLockAt); } else { renewLockLoop = null; TRACE_LOGGER.debug("Invoking onMessage with message containing sequence number '{}'", message.getSequenceNumber()); onMessageFuture = COMPLETED_FUTURE.thenComposeAsync((v) -> this.messageHandler.onMessageAsync(message), this.customCodeExecutor); } catch (Exception onMessageSyncEx) { TRACE_LOGGER.error("Invocation of onMessage with message containing sequence number '{}' threw unexpected exception", message.getSequenceNumber(), onMessageSyncEx); onMessageFuture = new CompletableFuture<Void>(); onMessageFuture.completeExceptionally(onMessageSyncEx); if (onMessageEx != null) { onMessageEx = ExceptionUtil.extractAsyncCompletionCause(onMessageEx); TRACE_LOGGER.error("onMessage with message containing sequence number '{}' threw exception", message.getSequenceNumber(), onMessageEx); this.notifyExceptionToMessageHandler(onMessageEx, ExceptionPhase.USERCALLBACK); if (renewLockLoop != null) { renewLockLoop.cancelLoop(); TRACE_LOGGER.trace("Cancelled loop to renew lock on message with sequence number '{}'", message.getSequenceNumber()); TRACE_LOGGER.debug("Completing message with sequence number '{}'", message.getSequenceNumber()); updateDispositionFuture = this.innerReceiver.completeAsync(message.getLockToken()); } else {
@Override public CompletableFuture<Void> onMessageAsync(IMessage serviceBusMessage) { Map<String, Object> headers = new HashMap<>(); Checkpointer checkpointer = new AzureCheckpointer(() -> this.success(serviceBusMessage.getLockToken()), () -> this.failure(serviceBusMessage.getLockToken())); if (checkpointConfig.getCheckpointMode() == CheckpointMode.MANUAL) { headers.put(AzureHeaders.CHECKPOINTER, checkpointer); } Message<U> message = messageConverter.toMessage(serviceBusMessage, new MessageHeaders(headers), payloadType); consumer.accept(message); if (checkpointConfig.getCheckpointMode() == CheckpointMode.RECORD) { return checkpointer.success().whenComplete((v, t) -> checkpointHandler(message, t)); } return CompletableFuture.completedFuture(null); }
public CompletableFuture<Void> onMessageAsync(IMessage message) { final String messageString = new String(message.getBody(), StandardCharsets.UTF_8); System.out.println("Received message: " + messageString); return CompletableFuture.completedFuture(null); }
TRACE_LOGGER.trace("Message with sequence number '{}' received from session '{}' on entity '{}'.", message.getSequenceNumber(), session.getSessionId(), this.entityPath); sessionTracker.notifyMessageReceived(); this.sessionHandlerOptions.getMaxAutoRenewDuration(), TimerType.OneTimeRun); TRACE_LOGGER.debug("Invoking onMessage with message containing sequence number '{}'", message.getSequenceNumber()); CompletableFuture<Void> onMessageFuture; try { onMessageFuture = COMPLETED_FUTURE.thenComposeAsync((v) -> this.sessionHandler.onMessageAsync(session, message), this.customCodeExecutor); } catch (Exception onMessageSyncEx) { TRACE_LOGGER.error("Invocation of onMessage with message containing sequence number '{}' threw unexpected exception", message.getSequenceNumber(), onMessageSyncEx); onMessageFuture = new CompletableFuture<Void>(); onMessageFuture.completeExceptionally(onMessageSyncEx); if (onMessageEx != null) { onMessageEx = ExceptionUtil.extractAsyncCompletionCause(onMessageEx); TRACE_LOGGER.error("onMessage with message containing sequence number '{}' threw exception", message.getSequenceNumber(), onMessageEx); this.notifyExceptionToSessionHandler(onMessageEx, ExceptionPhase.USERCALLBACK); TRACE_LOGGER.debug("Completing message with sequence number '{}'", message.getSequenceNumber()); updateDispositionFuture = session.completeAsync(message.getLockToken()); } else { updateDispositionFuture = CompletableFuture.completedFuture(null); TRACE_LOGGER.debug("Abandoning message with sequence number '{}'", message.getSequenceNumber()); updateDispositionFuture = session.abandonAsync(message.getLockToken()); if (updateDispositionEx != null) { updateDispositionEx = ExceptionUtil.extractAsyncCompletionCause(updateDispositionEx);
public CompletableFuture<Void> onMessageAsync(IMessage message) { final String messageString = new String(message.getBody(), StandardCharsets.UTF_8); LOG.debug("Received message: " + messageString); if (currentResult != null) { currentResult.append("Received message: " + messageString + CR); } return CompletableFuture.completedFuture(null); }
@OnAzureSBMessage public void receiveMessage(IMessage message) { System.out.println("Received Message " + new String(message.getBody())); }