/** * Inserts new messages into DB. * * @param msg the message */ protected void insertMessage(Message msg) { getMessageService().insertMessages(Arrays.asList(msg)); }
/** * Get detail of message identified by its id. * * @param id the id of message. * @return message detail. */ @GetMapping(path = "/{id}", produces = {"application/xml", "application/json"}) public ResponseEntity<MessageRpc> detail(@PathVariable final Long id) { LOG.trace("Fetch detail of message with id [{}].", id); return Optional.ofNullable(messageService.findEagerMessageById(id)) .map(message -> new ResponseEntity<>( MessageRpc.fromMessage().convert(message), HttpStatus.OK) ) .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); }
@Nullable private Message findPartlyFailedMessage() { return messageService.findPartlyFailedMessage(partlyFailedInterval.getValue().toDuration()); } }
@ManagedAttribute(description = "Count of messages in state WAITING_FOR_RES") public int getCountOfWaitingForResponse() { return messageService.getCountMessages(MsgStateEnum.WAITING_FOR_RES, null); }
messageService.setStateWaiting(parentMsg); messageService.insertMessages(messages);
@Handler public void postponeMessage(Exchange exchange, @Body Message msg) { // set Message to header because of event notification exchange.getIn().setHeader(AsynchConstants.MSG_HEADER, msg); // change state getBean(MessageService.class).setStatePostponed(msg); // generates event AsynchEventHelper.notifyMsgPostponed(exchange); }
endpoint.getMessageService().setFunnelComponentId(msg, funnelCompId); List<Message> messages = endpoint.getMessageService().getMessagesForGuaranteedOrderForFunnel( msg.getFunnelValue(), Seconds.of(endpoint.getIdleInterval()).toDuration(), endpoint.isExcludeFailedState(), funnelCompId); int count = endpoint.getMessageService().getCountProcessingMessagesForFunnel(msg.getFunnelValue(), Seconds.of(endpoint.getIdleInterval()).toDuration(), funnelCompId);
/** * Find messages in given state that are eligible for processing. * * @param msgState the state. * @return list of messages, empty if none messages are eligible. */ protected List<Message> findMessagesForProcessing(MsgStateEnum msgState) { long saveTimeInSeconds = getSaveTimeInSeconds(msgState); if (saveTimeInSeconds < 0) { LOG.trace("Messages in state [{}] will be skipped, as configured to be kept indefinitely.", msgState); return Collections.emptyList(); } final MessageFilter messageFilter = new MessageFilter(); messageFilter.setState(msgState); messageFilter.setLastChangeTo(Instant.now().minusSeconds(saveTimeInSeconds)); long limit = messagesTechnicalLimit.getValue(); LOG.trace("Will search for messages with filter {}, and technical limit {}.", messageFilter, limit); final List<Message> messageList = messageService.findMessagesByFilter(messageFilter, limit); if (limit == messageList.size()) { LOG.info("Reached limit for one iteration of job {}, probably there are other messages eligible" + "to be processed. Will be processed in the next iteration.", limit); } return messageList; }
} else { List<Message> messages = messageService.getMessagesForGuaranteedOrderForRoute(msg.getFunnelValue(), msg.isExcludeFailedState());
@Nullable private Message findPostponedMessage() { return messageService.findPostponedMessage(postponedInterval.getValue().toDuration()); }
@ManagedAttribute(description = "Count of messages in state PROCESSING") public int getCountOfProcessing() { return messageService.getCountMessages(MsgStateEnum.PROCESSING, null); }
private void postponeMessage(Exchange exchange, Message msg, MsgFunnelEndpoint endpoint) { // change state endpoint.getMessageService().setStatePostponed(msg); // generates event endpoint.getAsyncEventNotifier().notifyMsgPostponed(exchange); // set StopProcessor - mark the exchange to stop continue routing exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE); } }
/** * List messages, by given filter. * * @param messageFilter the filter to filter messages. * @return custom collection wrapper with message list elements. */ @GetMapping(produces = {"application/xml", "application/json"}) @ResponseStatus(HttpStatus.OK) @ResponseBody public MessageCollectionWrapper list(final MessageFilterRpc messageFilter){ Constraints.notNull(messageFilter.getReceivedFrom(), "The receivedFrom is mandatory."); Constraints.notNull(messagesLimit.getValue(), "the messagesLimit must be configured."); final MessageFilter filter = MessageFilterRpc.toMessageFilter().convert(messageFilter); LOG.trace("List messages by filter [{}].", filter); // fetch messages from messageService final List<Message> messageList = messageService.findMessagesByFilter(filter, messagesLimit.getValue()); return new MessageCollectionWrapper( MessageListItemRpc.fromMessage(), messageList, messagesLimit.getValue(), messageList.size() ); }
.getMessagesForGuaranteedOrderForRoute(msg.getFunnelValue(), msg.isExcludeFailedState());
@ManagedAttribute(description = "Count of messages in state OK") public int getCountOfOk() { return messageService.getCountMessages(MsgStateEnum.OK, null); }
messageService.setStatePostponed(msg);
@ManagedAttribute(description = "Count of messages in state CANCEL") public int getCountOfCancel() { return messageService.getCountMessages(MsgStateEnum.CANCEL, null); }
@ManagedAttribute(description = "Count of messages in state FAILED") public int getCountOfFailed() { return messageService.getCountMessages(MsgStateEnum.FAILED, null); }
@ManagedAttribute(description = "Count of messages in state WAITING") public int getCountOfWaiting() { return messageService.getCountMessages(MsgStateEnum.WAITING, null); }
@ManagedAttribute(description = "Count of messages in state NEW") public int getCountOfNew() { return messageService.getCountMessages(MsgStateEnum.NEW, null); }