public Worker createWorker() throws InvalidTaskException, TaskRejectedException { return workerFactory.getWorker(this); }
private String getWorkerVersion() { final com.hpe.caf.api.worker.WorkerConfiguration workerConfig = workerFactory.getWorkerConfiguration(); if (workerConfig != null) { final String workerVersion = workerConfig.getWorkerVersion(); if (workerVersion != null) { return workerVersion; } } return WORKER_VERSION_UNKNOWN; }
static WorkerThreadPool create(final WorkerFactory workerFactory, final Runnable handler) { if (workerFactory instanceof BulkWorker) { return new BulkWorkerThreadPool(workerFactory, handler); } else { return create(workerFactory.getWorkerThreads(), handler); } }
@Override public void setResponse(final InvalidTaskException invalidTaskException) { if (invalidTaskException == null) { throw new IllegalArgumentException(); } incrementResponseCount(true); LOG.error("Task data is invalid for {}, returning status {}", taskMessage.getTaskId(), TaskStatus.INVALID_TASK, invalidTaskException); final String taskClassifier = MoreObjects.firstNonNull(taskMessage.getTaskClassifier(), ""); final String invalidTaskExceptionMessage = invalidTaskException.getMessage(); final byte[] taskData = invalidTaskExceptionMessage == null ? new byte[]{} : invalidTaskExceptionMessage.getBytes(StandardCharsets.UTF_8); final Map<String, byte[]> context = MoreObjects.firstNonNull( taskMessage.getContext(), Collections.<String, byte[]>emptyMap()); final TaskMessage invalidResponse = new TaskMessage( MoreObjects.firstNonNull(taskMessage.getTaskId(), ""), taskClassifier, taskMessage.getTaskApiVersion(), taskData, TaskStatus.INVALID_TASK, context, workerFactory.getInvalidTaskQueue(), taskMessage.getTracking(), new TaskSourceInfo(getWorkerName(taskClassifier), getWorkerVersion())); completeResponse(invalidResponse); }
public BulkWorkerThreadPool( final WorkerFactory workerFactory, final Runnable handler ) { final int nThreads = workerFactory.getWorkerThreads(); this.bulkWorker = (BulkWorker) workerFactory; this.workQueue = new LinkedBlockingQueue<>(); this.bulkWorkerThreads = new BulkWorkerThread[nThreads]; this.throwableHandler = handler; this.backupThreadPool = new StreamingWorkerThreadPool(1, handler); this.isActive = true; for (int i = 0; i < nThreads; i++) { BulkWorkerThread bulkWorkerThread = new BulkWorkerThread(); bulkWorkerThreads[i] = bulkWorkerThread; bulkWorkerThread.start(); } }
default Worker getWorker(WorkerTaskData workerTask) throws TaskRejectedException, InvalidTaskException { return getWorker(workerTask.getClassifier(), workerTask.getVersion(), workerTask.getStatus(), workerTask.getData(), workerTask.getContext(), workerTask.getTrackingInfo()); }
private String getWorkerName(final String defaultName) { final com.hpe.caf.api.worker.WorkerConfiguration workerConfig = workerFactory.getWorkerConfiguration(); if (workerConfig != null) { final String workerName = workerConfig.getWorkerName(); if (workerName != null) { return workerName; } } return defaultName; }