@Override public void reportUpdate(final String queueMsgId, final TaskMessage reportUpdateMessage) { Objects.requireNonNull(queueMsgId); Objects.requireNonNull(reportUpdateMessage); LOG.debug("Sending report updates to queue {})", reportUpdateMessage.getTo()); final byte[] output; try { output = codec.serialise(reportUpdateMessage); } catch (final CodecException ex) { throw new RuntimeException(ex); } final int priority = reportUpdateMessage.getPriority() == null ? 0 : reportUpdateMessage.getPriority(); try { workerQueue.publish("-1", output, reportUpdateMessage.getTo(), Collections.emptyMap(), priority); } catch (final QueueException ex) { throw new RuntimeException(ex); } }
@Override public void send(final String queueMsgId, final TaskMessage responseMessage) { Objects.requireNonNull(queueMsgId); Objects.requireNonNull(responseMessage); LOG.debug("Sending task {} complete (message id: {})", responseMessage.getTaskId(), queueMsgId); final String queue = responseMessage.getTo(); checkForTrackingTermination(queueMsgId, queue, responseMessage); final byte[] output; try { output = codec.serialise(responseMessage); } catch (final CodecException ex) { throw new RuntimeException(ex); } final int priority = responseMessage.getPriority() == null ? 0 : responseMessage.getPriority(); try { workerQueue.publish("-1", output, queue, Collections.emptyMap(), priority); } catch (final QueueException ex) { throw new RuntimeException(ex); } }
@Override public void forward(String queueMsgId, String queue, TaskMessage forwardedMessage, Map<String, Object> headers) { Objects.requireNonNull(queueMsgId); Objects.requireNonNull(forwardedMessage); // queue can be null for a dead end worker LOG.debug("Task {} (message id: {}) being forwarded to queue {}", forwardedMessage.getTaskId(), queueMsgId, queue); checkForTrackingTermination(queueMsgId, queue, forwardedMessage); try { // If the queue is null, acknowledge the task rather than forwarding it if (queue == null) { workerQueue.acknowledgeTask(queueMsgId); } else { // Else forward the task byte[] output = codec.serialise(forwardedMessage); workerQueue.publish(queueMsgId, output, queue, headers, forwardedMessage.getPriority() == null ? 0 : forwardedMessage.getPriority()); stats.incrementTasksForwarded(); //TODO - I'm guessing this stat should not be updated for forwarded messages: // stats.getOutputSizes().update(output.length); } } catch (CodecException | QueueException e) { LOG.error("Cannot publish data for forwarded task {}, rejecting", forwardedMessage.getTaskId(), e); abandon(queueMsgId, e); } }
workerQueue.publish(queueMsgId, output, queue, Collections.emptyMap(), responseMessage.getPriority() == null ? 0 : responseMessage.getPriority()); stats.getOutputSizes().update(output.length);