private List<ExecutionMessage> filter(List<ExecutionMessage> messages, ExecStatus status) { List<ExecutionMessage> result = new ArrayList<>(); for (ExecutionMessage msg : messages) { if (msg.getStatus() == status) { result.add(msg); } } return result; }
protected List<Message> filerToPersistMessages(List<Message> messages){ List<Message> result = new ArrayList<>(); //We need to get from the list the FINISHED persisted messages for(Message msg : messages){ if(((ExecutionMessage)msg).isStepPersist() && ((ExecutionMessage)msg).getStatus().equals(ExecStatus.FINISHED)){ result.add(msg); } } return result; }
protected List<Message> filerToPersistMessages(List<Message> messages){ List<Message> result = new ArrayList<>(); //We need to get from the list the FINISHED persisted messages for(Message msg : messages){ if(((ExecutionMessage)msg).isStepPersist() && ((ExecutionMessage)msg).getStatus().equals(ExecStatus.FINISHED)){ result.add(msg); } } return result; }
@Override public void setValues(PreparedStatement ps, int i) throws SQLException { ExecutionMessage msg = messages.get(i); ps.setLong(1, idGen.next()); ps.setLong(2, msg.getExecStateId()); ps.setString(3, msg.getWorkerId()); ps.setString(4, msg.getWorkerGroup()); ps.setInt(5, msg.getStatus().getNumber()); ps.setInt(6, msg.getMsgSeqId()); ps.setLong(7, Calendar.getInstance().getTimeInMillis()); ps.setLong(8, version); }
@Override public void onEnqueue(List<ExecutionMessage> messages, int queueSize) { if (logger.isDebugEnabled()) { logger.debug("Enqueue " + messages.size() + " messages:"); logger.debug("queue size: " + queueSize); if (logger.isTraceEnabled()) { for (ExecutionMessage msg : messages) { String message = String.format( "Enqueue msgId= %s:%s,workerId=%s,status=%s", msg.getMsgUniqueId(), String.valueOf(msg.getMsgSeqId()), msg.getWorkerId(), msg.getStatus().toString() ); logger.trace(message); } } } }
@Override public void onPoll(List<ExecutionMessage> messages, int queueSize) { if (logger.isDebugEnabled()) { logger.debug("poll " + messages.size() + " messages:"); logger.debug("queue size: " + queueSize); if (logger.isTraceEnabled()) { for (ExecutionMessage msg : messages) { String message = String.format( "Poll msgId= %s:%s,workerId=%s,status=%s", msg.getMsgUniqueId(), String.valueOf(msg.getMsgSeqId()), msg.getWorkerId(), msg.getStatus().toString() ); logger.trace(message); } } } }
public List<ExecutionMessage> pollMessagesWithoutAck(int maxSize, long minVersionAllowed) { pollMessagesWithoutAckJdbcTemplate.setStatementBatchSize(maxSize); try { String sqlStat = QUERY_MESSAGES_WITHOUT_ACK_SQL; Object[] values = {ExecStatus.SENT.getNumber(), minVersionAllowed}; long time = System.currentTimeMillis(); List<ExecutionMessage> result = pollMessagesWithoutAckJdbcTemplate.query(sqlStat, values, new ExecutionMessageWithoutPayloadRowMapper()); if (!result.isEmpty()) { logger.warn("Pool " + result.size() + " messages without ack, version = " + minVersionAllowed); if (logger.isDebugEnabled()) { for (ExecutionMessage msg : result) { logger.debug("Recovery msg [" + msg.getExecStateId() + "," + msg.getStatus() + "," + msg.getCreateDate() + "]"); } } } if (logger.isTraceEnabled()) logger.trace("Query [" + sqlStat + "] took " + (System.currentTimeMillis() - time) + " ms"); if (logger.isDebugEnabled()) { logger.debug("Got msg without ack :" + result.size() + ",for version:" + minVersionAllowed); } return result; } finally { pollMessagesWithoutAckJdbcTemplate.clearStatementBatchSize(); } }
if ( msg.getWorkerId().equals(ExecutionMessage.EMPTY_WORKER) && msg.getStatus() == ExecStatus.PENDING) { if (groupWorkersMap == null) { String engineVersionId = engineVersionService.getEngineVersionId();
msg.setExecStateId(execStateId); stateMessages.add(msg); } else if (msg.getPayload() != null && msg.getStatus() == ExecStatus.IN_PROGRESS) { stateMessages.add(msg);