@Override
public void forward(String queueMsgId, String queue, TaskMessage forwardedMessage, Map<String, Object> headers)
{
Objects.requireNonNull(queueMsgId);
Objects.requireNonNull(forwardedMessage);
LOG.debug("Task {} (message id: {}) being forwarded to queue {}", forwardedMessage.getTaskId(), queueMsgId, queue);
checkForTrackingTermination(queueMsgId, queue, forwardedMessage);
try {
if (queue == null) {
workerQueue.acknowledgeTask(queueMsgId);
} else {
byte[] output = codec.serialise(forwardedMessage);
workerQueue.publish(queueMsgId, output, queue, headers, forwardedMessage.getPriority() == null ? 0 : forwardedMessage.getPriority());
stats.incrementTasksForwarded();
}
} catch (CodecException | QueueException e) {
LOG.error("Cannot publish data for forwarded task {}, rejecting", forwardedMessage.getTaskId(), e);
abandon(queueMsgId, e);
}
}