Skip to content
Snippets Groups Projects
Commit 4540e7c0 authored by Johannes Buechele's avatar Johannes Buechele
Browse files

fixed: send message after db commit

parent 279e1ec8
No related branches found
No related tags found
No related merge requests found
......@@ -121,7 +121,7 @@ const uploadWork = async (
try {
const keycloakUserId = UserService.getUserId();
const response = await HttpClient.get(
`/files/upload/presigned-url?filename=${filename}&userId=${keycloakUserId}`,
`/works/upload/presigned-url?filename=${filename}&userId=${keycloakUserId}`,
);
const presignedUploadUrl = response.data?.url;
const prefix = response.data?.prefix;
......
package eu.fairkom.faircommons.api_service.api;
import eu.fairkom.faircommons.api_service.service.WorkService;
import eu.fairkom.faircommons.common.models.DownloadFileResponse;
import eu.fairkom.faircommons.common.models.views.WorkCreateView;
import eu.fairkom.faircommons.common.models.views.WorkView;
import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.Valid;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
......
package eu.fairkom.faircommons.api_service.listener;
import eu.fairkom.faircommons.common.rabbitmq.messages.WorkFileMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;
import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE;
@Component
public class WorkRegisteredEventListener {
private static final Logger logger = LoggerFactory.getLogger(WorkRegisteredEventListener.class);
private final RabbitTemplate rabbitTemplate;
public WorkRegisteredEventListener(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void handleWorkRegisteredEvent(WorkFileMessage message) {
rabbitTemplate.convertAndSend(HASHING_QUEUE, message);
logger.info("Message sent to hashing queue for work ID: {}", message.getWorkId());
}
}
......@@ -16,8 +16,7 @@ import eu.fairkom.faircommons.common.rabbitmq.messages.WorkFileMessage;
import jakarta.persistence.EntityNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.core.io.InputStreamResource;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
......@@ -25,27 +24,24 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.UUID;
import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE;
@Service
public class WorkService {
private static final Logger logger = LoggerFactory.getLogger(WorkService.class);
private final RabbitTemplate rabbitTemplate;
private final WorkRepository workRepository;
private final WorkMapper workMapper;
private final TagMapper tagMapper;
private final TagRepository tagRepository;
private final ApplicationEventPublisher eventPublisher;
public WorkService(RabbitTemplate rabbitTemplate,
WorkRepository workRepository,
public WorkService(WorkRepository workRepository,
WorkMapper workMapper,
TagMapper tagMapper,
TagRepository tagRepository) {
this.rabbitTemplate = rabbitTemplate;
TagRepository tagRepository, ApplicationEventPublisher eventPublisher) {
this.workRepository = workRepository;
this.workMapper = workMapper;
this.tagMapper = tagMapper;
this.tagRepository = tagRepository;
this.eventPublisher = eventPublisher;
}
@Transactional
......@@ -57,11 +53,10 @@ public class WorkService {
var message = WorkFileMessage.builder()
.workId(work.getId())
.workFile(workCreateView.getWorkFile())
.userId(workCreateView.getRegistrar());
rabbitTemplate.convertAndSend(HASHING_QUEUE, message.build());
logger.debug("Message sent to hashing queue for work ID: {}", work.getId());
.userId(workCreateView.getRegistrar())
.build();
eventPublisher.publishEvent(message);
return work.getId();
}
......
......@@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.UUID;
@Service
public class WorkStatusService {
private static final Logger logger = LoggerFactory.getLogger(WorkStatusService.class);
......
......@@ -5,5 +5,6 @@ import eu.fairkom.faircommons.common.models.entities.WorkStatus;
public interface MessageDispatchStrategy {
void dispatch(Work work);
WorkStatus.WorkStatusType getType();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment