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 ( ...@@ -121,7 +121,7 @@ const uploadWork = async (
try { try {
const keycloakUserId = UserService.getUserId(); const keycloakUserId = UserService.getUserId();
const response = await HttpClient.get( 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 presignedUploadUrl = response.data?.url;
const prefix = response.data?.prefix; const prefix = response.data?.prefix;
......
package eu.fairkom.faircommons.api_service.api; package eu.fairkom.faircommons.api_service.api;
import eu.fairkom.faircommons.api_service.service.WorkService; 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.WorkCreateView;
import eu.fairkom.faircommons.common.models.views.WorkView; import eu.fairkom.faircommons.common.models.views.WorkView;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
import jakarta.validation.Valid; 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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder; 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; ...@@ -16,8 +16,7 @@ import eu.fairkom.faircommons.common.rabbitmq.messages.WorkFileMessage;
import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.EntityNotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.core.io.InputStreamResource;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -25,27 +24,24 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -25,27 +24,24 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.UUID; import java.util.UUID;
import static eu.fairkom.faircommons.common.rabbitmq.RabbitMqConfiguration.HASHING_QUEUE;
@Service @Service
public class WorkService { public class WorkService {
private static final Logger logger = LoggerFactory.getLogger(WorkService.class); private static final Logger logger = LoggerFactory.getLogger(WorkService.class);
private final RabbitTemplate rabbitTemplate;
private final WorkRepository workRepository; private final WorkRepository workRepository;
private final WorkMapper workMapper; private final WorkMapper workMapper;
private final TagMapper tagMapper; private final TagMapper tagMapper;
private final TagRepository tagRepository; private final TagRepository tagRepository;
private final ApplicationEventPublisher eventPublisher;
public WorkService(RabbitTemplate rabbitTemplate, public WorkService(WorkRepository workRepository,
WorkRepository workRepository,
WorkMapper workMapper, WorkMapper workMapper,
TagMapper tagMapper, TagMapper tagMapper,
TagRepository tagRepository) { TagRepository tagRepository, ApplicationEventPublisher eventPublisher) {
this.rabbitTemplate = rabbitTemplate;
this.workRepository = workRepository; this.workRepository = workRepository;
this.workMapper = workMapper; this.workMapper = workMapper;
this.tagMapper = tagMapper; this.tagMapper = tagMapper;
this.tagRepository = tagRepository; this.tagRepository = tagRepository;
this.eventPublisher = eventPublisher;
} }
@Transactional @Transactional
...@@ -57,11 +53,10 @@ public class WorkService { ...@@ -57,11 +53,10 @@ public class WorkService {
var message = WorkFileMessage.builder() var message = WorkFileMessage.builder()
.workId(work.getId()) .workId(work.getId())
.workFile(workCreateView.getWorkFile()) .workFile(workCreateView.getWorkFile())
.userId(workCreateView.getRegistrar()); .userId(workCreateView.getRegistrar())
.build();
rabbitTemplate.convertAndSend(HASHING_QUEUE, message.build());
logger.debug("Message sent to hashing queue for work ID: {}", work.getId());
eventPublisher.publishEvent(message);
return work.getId(); return work.getId();
} }
......
...@@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory; ...@@ -9,8 +9,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.UUID;
@Service @Service
public class WorkStatusService { public class WorkStatusService {
private static final Logger logger = LoggerFactory.getLogger(WorkStatusService.class); private static final Logger logger = LoggerFactory.getLogger(WorkStatusService.class);
......
...@@ -5,5 +5,6 @@ import eu.fairkom.faircommons.common.models.entities.WorkStatus; ...@@ -5,5 +5,6 @@ import eu.fairkom.faircommons.common.models.entities.WorkStatus;
public interface MessageDispatchStrategy { public interface MessageDispatchStrategy {
void dispatch(Work work); void dispatch(Work work);
WorkStatus.WorkStatusType getType(); 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