@Override public void abandon(UUID lockToken, Map<String, Object> propertiesToModify, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.abandon(lockToken, propertiesToModify, transaction); }
@Override public CompletableFuture<Void> abandonAsync(UUID lockToken, TransactionContext transaction) { return this.messageAndSessionPump.abandonAsync(lockToken, transaction); }
@Override public void complete(UUID lockToken) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.complete(lockToken); }
private void acceptSessionAndPumpMessages() { if (!this.getIsClosingOrClosed()) { TRACE_LOGGER.debug("Accepting a session from entity '{}'", this.entityPath); CompletableFuture<IMessageSession> acceptSessionFuture = ClientFactory.acceptSessionFromEntityPathAsync(this.factory, this.entityPath, this.entityType, null, this.receiveMode); this.notifyExceptionToSessionHandler(acceptSessionEx, ExceptionPhase.ACCEPTSESSION); MessageAndSessionPump.this.acceptSessionAndPumpMessages(); }, SLEEP_DURATION_ON_ACCEPT_SESSION_EXCEPTION, TimerType.OneTimeRun); SessionTracker sessionTracker = new SessionTracker(this, session, sessionRenewLockLoop); for (int i = 0; i < this.sessionHandlerOptions.getMaxConcurrentCallsPerSession(); i++) { this.receiveFromSessionAndPumpMessage(sessionTracker);
@Override public void deadLetter(UUID lockToken, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.deadLetter(lockToken, transaction); }
@Override public void registerSessionHandler(ISessionHandler handler, SessionHandlerOptions handlerOptions, ExecutorService executorService) throws InterruptedException, ServiceBusException { assertNonNulls(handler, handlerOptions, executorService); TRACE_LOGGER.info("Registering session handler on entity '{}' with '{}'", this.entityPath, handlerOptions); this.setHandlerRegistered(); this.sessionHandler = handler; this.sessionHandlerOptions = handlerOptions; this.customCodeExecutor = executorService; for (int i = 0; i < handlerOptions.getMaxConcurrentSessions(); i++) { this.acceptSessionAndPumpMessages(); } }
@Override public void abandon(UUID lockToken, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.checkInnerReceiveCreated(); this.innerReceiver.abandon(lockToken, transaction); }
@Override public void registerMessageHandler(IMessageHandler handler, MessageHandlerOptions handlerOptions, ExecutorService executorService) throws InterruptedException, ServiceBusException { assertNonNulls(handler, handlerOptions, executorService); TRACE_LOGGER.info("Registering message handler on entity '{}' with '{}'", this.entityPath, handlerOptions); this.setHandlerRegistered(); this.messageHandler = handler; this.messageHandlerOptions = handlerOptions; this.customCodeExecutor = executorService; this.innerReceiver = ClientFactory.createMessageReceiverFromEntityPath(this.factory, this.entityPath, this.entityType, this.receiveMode); TRACE_LOGGER.info("Created MessageReceiver to entity '{}'", this.entityPath); if(this.prefetchCount != UNSET_PREFETCH_COUNT) { this.innerReceiver.setPrefetchCount(this.prefetchCount); } for (int i = 0; i < handlerOptions.getMaxConcurrentCalls(); i++) { this.receiveAndPumpMessage(); } }
private CompletableFuture<Void> createPumpAndBrowserAsync(MessagingFactory factory) { this.factory = factory; CompletableFuture<Void> postSessionBrowserFuture = MiscRequestResponseOperationHandler.create(factory, this.subscriptionPath, MessagingEntityType.SUBSCRIPTION).thenAcceptAsync((msoh) -> { this.miscRequestResponseHandler = msoh; this.sessionBrowser = new SessionBrowser(factory, this.subscriptionPath, MessagingEntityType.SUBSCRIPTION, msoh); }, MessagingFactory.INTERNAL_THREAD_POOL); this.messageAndSessionPump = new MessageAndSessionPump(factory, this.subscriptionPath, MessagingEntityType.SUBSCRIPTION, receiveMode); CompletableFuture<Void> messagePumpInitFuture = this.messageAndSessionPump.initializeAsync(); return CompletableFuture.allOf(postSessionBrowserFuture, messagePumpInitFuture); }
@Override public CompletableFuture<Void> completeAsync(UUID lockToken) { return this.messageAndSessionPump.completeAsync(lockToken); }
@Override protected CompletableFuture<Void> onClose() { return this.messageAndSessionPump.closeAsync().thenCompose((v) -> this.miscRequestResponseHandler.closeAsync().thenCompose((w) -> this.factory.closeAsync())); }
@Override public void deadLetter(UUID lockToken, Map<String, Object> propertiesToModify) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.deadLetter(lockToken, propertiesToModify); }
@Override public void abandon(UUID lockToken, Map<String, Object> propertiesToModify, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.checkInnerReceiveCreated(); this.innerReceiver.abandon(lockToken, propertiesToModify, transaction); }
private CompletableFuture<Void> createInternals(MessagingFactory factory, String queuePath, ReceiveMode receiveMode) { this.factory = factory; CompletableFuture<Void> postSessionBrowserFuture = MiscRequestResponseOperationHandler.create(factory, queuePath, MessagingEntityType.QUEUE).thenAcceptAsync((msoh) -> { this.miscRequestResponseHandler = msoh; this.sessionBrowser = new SessionBrowser(factory, queuePath, MessagingEntityType.QUEUE, msoh); }, MessagingFactory.INTERNAL_THREAD_POOL); this.messageAndSessionPump = new MessageAndSessionPump(factory, queuePath, MessagingEntityType.QUEUE, receiveMode); CompletableFuture<Void> messagePumpInitFuture = this.messageAndSessionPump.initializeAsync(); return CompletableFuture.allOf(postSessionBrowserFuture, messagePumpInitFuture); }
@Override public CompletableFuture<Void> completeAsync(UUID lockToken, TransactionContext transaction) { return this.messageAndSessionPump.completeAsync(lockToken, transaction); }
@Override protected CompletableFuture<Void> onClose() { return this.messageAndSessionPump.closeAsync().thenCompose((v) -> this.closeSenderAsync().thenCompose((u) -> this.miscRequestResponseHandler.closeAsync().thenCompose((w) -> this.factory.closeAsync()))); }
@Override public void deadLetter(UUID lockToken, String deadLetterReason, String deadLetterErrorDescription, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.deadLetter(lockToken, deadLetterReason, deadLetterErrorDescription, transaction); }
@Override public CompletableFuture<Void> completeAsync(UUID lockToken, TransactionContext transaction) { this.checkInnerReceiveCreated(); return this.innerReceiver.completeAsync(lockToken, transaction); }
@Override public void abandon(UUID lockToken, TransactionContext transaction) throws InterruptedException, ServiceBusException { this.messageAndSessionPump.abandon(lockToken, transaction); }
@Override public CompletableFuture<Void> abandonAsync(UUID lockToken, Map<String, Object> propertiesToModify, TransactionContext transaction) { return this.messageAndSessionPump.abandonAsync(lockToken, propertiesToModify, transaction); }