[英]Kafka publishing message
我正在嘗試實現訂閱 Kafka 的消息。 但有一件事我不能確定,據我所知,我需要推動功能本身,而不是響應。 因為我猜它應該將事務本身排隊,而不僅僅是消息。 但是不知道這種情況下需要退回什么樣的object?
我該如何解決以下方法?
謝謝。
@Override
public CustomerModifyResponseDTO modifyCustomer(CustomerModifyInputDto customerModifyInputDto) {
CustomerQueryDto customerQueryDto = getCustomer(customerModifyInputDto.getCustno());
MODIFYCUSTOMERFSFSREQ query = CustomerModifyRequestMapper.INSTANCE.modifyCustomerToSoapRq(customerQueryDto);
MODIFYCUSTOMERFSFSRES response = customerClient.modifyCustomer(query, customerModifyInputDto);
publisherService.publish(response.getFCUBSBODY().getCustomerFull().getMODNO().toString(), response, topic);
if (response.getFCUBSBODY().getFCUBSERRORRESP() != null
&& !response.getFCUBSBODY().getFCUBSERRORRESP().isEmpty()) {
throw new InvalidSoapFieldException(response.getFCUBSBODY().getFCUBSERRORRESP());
} else {
LOGGER.debug("Customer modify service");
return customerModifyMapper.toCustomerQueryDto(response);
}
}
出版商
package az.iba.ms.customer.service;
import org.springframework.kafka.support.SendResult;
import org.springframework.util.concurrent.ListenableFuture;
public interface KafkaPublisherService {
ListenableFuture<SendResult<String, Object>> publish(String key, Object value, String topic);
}
最后,我嘗試將其作為消息發送。 但我不知道如何返回
來自此未來消息的 CustomerModifyResponseDTO。 任何幫助都會很棒。 謝謝
@Override
public CustomerModifyResponseDTO modifyCustomer(CustomerModifyInputDto customerModifyInputDto)
throws ExecutionException, InterruptedException {
CustomerQueryDto customerQueryDto = getCustomer(customerModifyInputDto.getCustno());
MODIFYCUSTOMERFSFSREQ query = CustomerModifyRequestMapper.INSTANCE.modifyCustomerToSoapRq(customerQueryDto);
String number = query.getFCUBSBODY().getCustomerFull().getMODNO().add(BigDecimal.ONE).toString();
ListenableFuture<SendResult<String, Object>>
result = publisherService.publish(number, getCustomerModifyResponseDTO(query, customerModifyInputDto), topic);
return result.get();
}
private CustomerModifyResponseDTO getCustomerModifyResponseDTO(MODIFYCUSTOMERFSFSREQ query,
CustomerModifyInputDto customerModifyInputDto) {
MODIFYCUSTOMERFSFSRES response = customerClient.modifyCustomer(query, customerModifyInputDto).map();
if (response.getFCUBSBODY().getFCUBSERRORRESP() != null
&& !response.getFCUBSBODY().getFCUBSERRORRESP().isEmpty()) {
throw new InvalidSoapFieldException(response.getFCUBSBODY().getFCUBSERRORRESP());
} else {
LOGGER.debug("Customer modify service");
return CustomerModifyMapper.toCustomerQueryDto(response);
}
}
我正在嘗試實現訂閱 Kafka 的消息。 但有一件事我不能確定,據我所知,我需要推動功能本身,而不是響應。 因為我猜它應該將事務本身排隊,而不僅僅是消息。 但是不知道這種情況下需要退回什么樣的object?
我該如何解決以下方法?
謝謝。
@Override
public CustomerModifyResponseDTO modifyCustomer(CustomerModifyInputDto customerModifyInputDto) {
CustomerQueryDto customerQueryDto = getCustomer(customerModifyInputDto.getCustno());
MODIFYCUSTOMERFSFSREQ query = CustomerModifyRequestMapper.INSTANCE.modifyCustomerToSoapRq(customerQueryDto);
MODIFYCUSTOMERFSFSRES response = customerClient.modifyCustomer(query, customerModifyInputDto);
publisherService.publish(response.getFCUBSBODY().getCustomerFull().getMODNO().toString(), response, topic);
if (response.getFCUBSBODY().getFCUBSERRORRESP() != null
&& !response.getFCUBSBODY().getFCUBSERRORRESP().isEmpty()) {
throw new InvalidSoapFieldException(response.getFCUBSBODY().getFCUBSERRORRESP());
} else {
LOGGER.debug("Customer modify service");
return customerModifyMapper.toCustomerQueryDto(response);
}
}
出版商
package az.iba.ms.customer.service;
import org.springframework.kafka.support.SendResult;
import org.springframework.util.concurrent.ListenableFuture;
public interface KafkaPublisherService {
ListenableFuture<SendResult<String, Object>> publish(String key, Object value, String topic);
}
最后,我嘗試將其作為消息發送。 但我不知道如何返回
來自此未來消息的 CustomerModifyResponseDTO。 任何幫助都會很棒。 謝謝
@Override
public CustomerModifyResponseDTO modifyCustomer(CustomerModifyInputDto customerModifyInputDto)
throws ExecutionException, InterruptedException {
CustomerQueryDto customerQueryDto = getCustomer(customerModifyInputDto.getCustno());
MODIFYCUSTOMERFSFSREQ query = CustomerModifyRequestMapper.INSTANCE.modifyCustomerToSoapRq(customerQueryDto);
String number = query.getFCUBSBODY().getCustomerFull().getMODNO().add(BigDecimal.ONE).toString();
ListenableFuture<SendResult<String, Object>>
result = publisherService.publish(number, getCustomerModifyResponseDTO(query, customerModifyInputDto), topic);
return result.get();
}
private CustomerModifyResponseDTO getCustomerModifyResponseDTO(MODIFYCUSTOMERFSFSREQ query,
CustomerModifyInputDto customerModifyInputDto) {
MODIFYCUSTOMERFSFSRES response = customerClient.modifyCustomer(query, customerModifyInputDto).map();
if (response.getFCUBSBODY().getFCUBSERRORRESP() != null
&& !response.getFCUBSBODY().getFCUBSERRORRESP().isEmpty()) {
throw new InvalidSoapFieldException(response.getFCUBSBODY().getFCUBSERRORRESP());
} else {
LOGGER.debug("Customer modify service");
return CustomerModifyMapper.toCustomerQueryDto(response);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.