簡體   English   中英

Kafka 發布消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM